[HOLD for payment 2023-07-26] [$1000] Refactor: Remove isVisible prop from ValidateCodeForm

Refer to this commentfor specifics.
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~0195fcdfcd6d788597
Upwork Job ID:<PHONE_NUMBER>990858752
Last Price Increase: 2023-06-22

will work on this tomorrow (Monday)

I don't time to work o this so I gonna make this issue external 🙇

Ok, thank you for that update!

Hey 🙂  👋  this seems like a quite straightforward refactoring process - thanks for making it external. I saw another proposal above (before it was made external) but I believe it's incomplete / missing some steps.
Proposal
Please re-state the problem that we are trying to solve in this issue.
We'd like to remove isVisible prop from ValidateCodeForm in SignInPage. And also from all of its descendant components that are using this isVisible prop. In my alternative proposal (bottom), I explain a solution if we don't want to remove isVisible completely and only remove it from the ValidateCodeForm but keep it in the BaseValidateCodeForm
What is the root cause of that problem?
Essentially, the isVisible prop is not being used. Please refer to this comment. However, removing the prop only in the component itself will cause the field to not be visible.
This is due to ValidateCodeForm's descendant (BaseValidateCodeForm) has a default value of isVisible to be false. The isVisible value (false) in BaseValidateCodeForm comes from the withToggleVisibilityView HoC, which we also have to remove from BaseValidateCodeForm.
What changes do you think we should make in order to solve the problem?
The changes will be distributed across 4 files as follows.

File: signin/SignInPage.js. Changes:

diff --git a/src/pages/signin/SignInPage.js b/src/pages/signin/SignInPage.js
index a875c25359..1b57934902 100644
--- a/src/pages/signin/SignInPage.js
+++ b/src/pages/signin/SignInPage.js
@@ -163,7 +163,7 @@ class SignInPage extends Component {
                         isVisible={showLoginForm}
                         blurOnSubmit={this.props.account.validated === false}
                     />
-                    {showValidateCodeForm ? <ValidateCodeForm isVisible={showValidateCodeForm} /> : <PasswordForm isVisible={showPasswordForm} />}
+                    {showValidateCodeForm ? <ValidateCodeForm /> : <PasswordForm isVisible={showPasswordForm} />}
                     {showResendValidationForm && <ResendValidationForm />}
                     {showUnlinkLoginForm && <UnlinkLoginForm />}
                 </SignInPageLayout>

File: signin/ValidateCodeForm/index.js. Changes:

diff --git a/src/pages/signin/ValidateCodeForm/index.js b/src/pages/signin/ValidateCodeForm/index.js
index e60c30bff3..2329f38521 100644
--- a/src/pages/signin/ValidateCodeForm/index.js
+++ b/src/pages/signin/ValidateCodeForm/index.js
@@ -1,25 +1,10 @@
 import React from 'react';
-import PropTypes from 'prop-types';
 import BaseValidateCodeForm from './BaseValidateCodeForm';

-const defaultProps = {
-    isVisible: false,
-};
-
-const propTypes = {
-    isVisible: PropTypes.bool,
-};
-function ValidateCodeForm(props) {
-    return (
-        <BaseValidateCodeForm
-            isVisible={props.isVisible}
-            autoComplete="one-time-code"
-        />
-    );
+function ValidateCodeForm() {
+    return <BaseValidateCodeForm autoComplete="one-time-code" />;
 }

 ValidateCodeForm.displayName = 'ValidateCodeForm';
-ValidateCodeForm.propTypes = propTypes;
-ValidateCodeForm.defaultProps = defaultProps;

 export default ValidateCodeForm;

(removing isVisible props completely).

File: signin/ValidateCodeForm/index.android.js. Changes:

diff --git a/src/pages/signin/ValidateCodeForm/index.android.js b/src/pages/signin/ValidateCodeForm/index.android.js
index e0258121fa..e3ec3ed4fc 100644
--- a/src/pages/signin/ValidateCodeForm/index.android.js
+++ b/src/pages/signin/ValidateCodeForm/index.android.js
@@ -1,25 +1,10 @@
 import React from 'react';
-import PropTypes from 'prop-types';
 import BaseValidateCodeForm from './BaseValidateCodeForm';

-const defaultProps = {
-    isVisible: false,
-};
-
-const propTypes = {
-    isVisible: PropTypes.bool,
-};
-function ValidateCodeForm(props) {
-    return (
-        <BaseValidateCodeForm
-            isVisible={props.isVisible}
-            autoComplete="sms-otp"
-        />
-    );
+function ValidateCodeForm() {
+    return <BaseValidateCodeForm autoComplete="sms-otp" />;
 }

 ValidateCodeForm.displayName = 'ValidateCodeForm';
-ValidateCodeForm.propTypes = propTypes;
-ValidateCodeForm.defaultProps = defaultProps;

 export default ValidateCodeForm;

(also removing the isVisible prop).

File: signin/ValidateCodeForm/BaseValidateCodeForm Changes:

diff --git a/src/pages/signin/ValidateCodeForm/BaseValidateCodeForm.js b/src/pages/signin/ValidateCodeForm/BaseValidateCodeForm.js
index edb8a9ac53..4d81832a09 100755
--- a/src/pages/signin/ValidateCodeForm/BaseValidateCodeForm.js
+++ b/src/pages/signin/ValidateCodeForm/BaseValidateCodeForm.js
@@ -15,7 +15,6 @@ import ChangeExpensifyLoginLink from '../ChangeExpensifyLoginLink';
 import withLocalize, {withLocalizePropTypes} from '../../../components/withLocalize';
 import compose from '../../../libs/compose';
 import * as ValidationUtils from '../../../libs/ValidationUtils';
-import withToggleVisibilityView, {toggleVisibilityViewPropTypes} from '../../../components/withToggleVisibilityView';
 import canFocusInputOnScreenFocus from '../../../libs/canFocusInputOnScreenFocus';
 import * as ErrorUtils from '../../../libs/ErrorUtils';
 import {withNetwork} from '../../../components/OnyxProvider';
@@ -56,7 +55,6 @@ const propTypes = {
     autoComplete: PropTypes.oneOf(['sms-otp', 'one-time-code']).isRequired,

     ...withLocalizePropTypes,
-    ...toggleVisibilityViewPropTypes,
 };

 const defaultProps = {
@@ -71,7 +69,6 @@ function BaseValidateCodeForm(props) {
     const [twoFactorAuthCode, setTwoFactorAuthCode] = useState('');
     const [timeRemaining, setTimeRemaining] = useState(30);

-    const prevIsVisible = usePrevious(props.isVisible);
     const prevRequiresTwoFactorAuth = usePrevious(props.account.requiresTwoFactorAuth);
     const prevValidateCode = usePrevious(props.credentials.validateCode);

@@ -80,26 +77,11 @@ function BaseValidateCodeForm(props) {
     const timerRef = useRef();

     useEffect(() => {
-        if (!inputValidateCodeRef.current || prevIsVisible || !props.isVisible || !canFocusInputOnScreenFocus()) {
+        if (!inputValidateCodeRef.current || !canFocusInputOnScreenFocus()) {
             return;
         }
         inputValidateCodeRef.current.focus();
-    }, [props.isVisible, prevIsVisible]);
-
-    useEffect(() => {
-        if (!inputValidateCodeRef.current) {
-            return;
-        }
-
-        if (!validateCode) {
-            return;
-        }
-
-        // Clear the code input if magic code valid
-        if (prevIsVisible && !props.isVisible) {
-            setValidateCode('');
-        }
-    }, [props.isVisible, prevIsVisible, validateCode]);
+    }, []);

     useEffect(() => {
         if (prevValidateCode || !props.credentials.validateCode) {
@@ -309,6 +291,5 @@ export default compose(
         credentials: {key: ONYXKEYS.CREDENTIALS},
         preferredLocale: {key: ONYXKEYS.NVP_PREFERRED_LOCALE},
     }),
-    withToggleVisibilityView,
     withNetwork(),
 )(BaseValidateCodeForm);

(removing the withToggleVisibilityView HoC and the unused props).
What alternative solutions did you explore? (Optional)
We might only want to remove isVisible from ValidateCodeForm in the SignInPage but keep the isVisible prop in the BaseValidationCodeForm (for whatever reason).
If that's the case, we don't need to make any changes in BaseValidationCode. Instead, we only need to:

Explicitly pass true as the isVisible prop in the index page (and remove the unused defaultProps and propTypes).

Keep the same changes as above for signin/SignInPage.js.

With my two proposal above, I hope we can find one that fits our use-case best.
Thanks! 🙂

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~015644b14a43b1fc70

@rushatgabhane - when you get a chance, can you review this proposal? Thank you!

Assigning @huzaifa-99

Thank you for the update @huzaifa-99!

Reassigning another bug team member, I'm going OOO until Monday, July 10, and will take it back then if it's not closed by then.
Required action from the 🐛 team: Check on the PR state and it might be ready for payment late next week.

@muttmuure just a memo. The PR has been on hold for a while because of the merge freeze but I left the hold today

No update needed

No update needed

Alright, removing the other 🐛 team member. I'm back online and see that this is our current state:
@hayata-suenaga are we still on a freeze?

@alexpensify we're waiting for @rushatgabhane's response to this comment

@rushatgabhane - any update here: https://github.com/Expensify/App/pull/21594#issuecomment-1624103232

on it!

Thanks, we will look out for that update!

Waiting for the update here

Alright, waiting for automation to kick in here.

Not a regression. We're just removing dead code.

Made a manual request on new dot https://staging.new.expensify.com/r/5866861233909813

@rushatgabhane - thanks for completing the checklist. I'll work on the payment process in Upwork for @huzaifa-99 tomorrow July 26.

Here is the payment summary:

External issue reporter - N/A
Contributor that fixed the issue - @huzaifa-99 $1000
Contributor+ that helped on the issue and/or PR - @rushatgabhane $1000

Upwork Job: https://www.upwork.com/jobs/~0195fcdfcd6d788597
*If applicable, the bonuses will be applied on the final payment
Extra Notes regarding payment: This one was held because of the merge freeze, so I believe there is still a payment here. With that said, there will be no urgency bonus.

I'm having trouble with the Upwork job and will complete the process tomorrow.

Reviewed details for @rushatgabhane. This is accurate and approved for payment in NewDot.

@huzaifa-99 - I've sent the payment via Upwork. Please accept and I can complete the required process.

Ok, I've closed the job in Upwork and the payment to @huzaifa-99 has been sent out via Upwork.


[DO NOT MERGE] TelemetryLoggerMiddleware

Middlware component that uses IBotTelemetryClient to log events when messages are received/sent/updated or deleted in the bot.
Additional Details
https://github.com/daveta/analytics/blob/master/telemetry_enhancements/TelemetryEnhancements.md
Working on nodejs..

Should all telemetry properties follow the same casing? This middleware & the luis/qna samples use lower camel case. The waterfall telemetry & initializer is upper camel case.

Pull Request Test Coverage Report for Build 50610

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.3%) to 74.882%

Totals

Change from base Build 50252:
0.3%

Covered Lines:
4135

Relevant Lines:
5522

💛  - Coveralls


endpoints_get_discovery_doc goal broken since appengine-maven-plugin 1.9.49

In appengine-maven-plugin 1.9.49, the dependency to endpoints-framework was updated to 2.0.0.
In this version, the -f (format) parameter was removed from GetDiscoveryDocAction.
But the appengine plugin still calls EndpointsTool with the -f parameter when executing the endpoints_get_discovery_do goal, causing this very unclear error:
Failed to execute goal com.google.appengine:appengine-maven-plugin:1.9.49:endpoints_get_discovery_doc (default) on project aodocs-api: -f
The appengine-maven-plugin should be updated to remove the -f flag when calling EndpointsTool, or support for this flag should be restored in GetDiscoveryDocAction.

This is being fixed outside of our team. It may already be fixed.


topologySpreadConstraints support in helm chart

Describe why this change is needed
It would be nice to have topologySpreadConstraints support in the official helm chart
/kind feature
Describe solutions and alternatives considered (optional)
No response
Is there anything else you would like to add?
No response

as it was applied to the cert-manager helm chart here: https://github.com/cert-manager/cert-manager/pull/5395

Thank you for submitting your feature request to AWS Private CA Issuer plugin. We will review the request and get back to you

Hi @BryanStenson-okta - Thank you for the request. Given the niche use for this, we won't prioritize this work today, but we welcome any PRs from the community adding this support.

PR: https://github.com/cert-manager/aws-privateca-issuer/pull/258

Merged, thank you @BryanStenson-okta!


Refresh error on long-running process containing single subscription and 4 eventFilters

Received this error while allowing an app using the SDK to run overnight:
REFRESH FAILURE DATA:  { [Error: request to https://platform.devtest.ringcentral.com/restapi/oauth/token failed, reason: getaddrinfo ENOTFOUND platform.devtest.ringcentral.com platform.devtest.ringcentral.com:443]
  apiResponse:
   ApiResponse {
     _request:
      Request {
        method: 'POST',
        headers: [Object],
        body: 'grant_type=refresh_token&refresh_token=<HIDDEN>&access_token_ttl=null&refresh_token_ttl=36000',
        url: 'https://platform.devtest.ringcentral.com/restapi/oauth/token',
        follow: 20,
        counter: 0,
        timeout: 0,
        compress: true,
        size: 0,
        agent: undefined,
        protocol: 'https:',
        hostname: 'platform.devtest.ringcentral.com',
        port: null,
        path: '/restapi/oauth/token',
        auth: null,
        originalBody: 'grant_type=refresh_token&refresh_token=<HIDDEN>&access_token_ttl=null&refresh_token_ttl=36000' },
     _response: undefined,
     _text: undefined,
     _json: null,
     _multipart: [] },
  originalMessage: 'request to https://platform.devtest.ringcentral.com/restapi/oauth/token failed, reason: getaddrinfo ENOTFOUND platform.devtest.ringcentral.com platform.devtest.ringcentral.com:443' }
RENEW SUBSCRIPTION ERROR DATA:  { [Error: request to https://platform.devtest.ringcentral.com/restapi/oauth/token failed, reason: getaddrinfo ENOTFOUND platform.devtest.ringcentral.com platform.devtest.ringcentral.com:443]
  apiResponse:
   ApiResponse {
     _request:
      Request {
        method: 'POST',
        headers: [Object],
        body: 'grant_type=refresh_token&refresh_token=<HIDDEN>&access_token_ttl=null&refresh_token_ttl=36000',
        url: 'https://platform.devtest.ringcentral.com/restapi/oauth/token',
        follow: 20,
        counter: 0,
        timeout: 0,
        compress: true,
        size: 0,
        agent: undefined,
        protocol: 'https:',
        hostname: 'platform.devtest.ringcentral.com',
        port: null,
        path: '/restapi/oauth/token',
        auth: null,
        originalBody: 'grant_type=refresh_token&refresh_token=<HIDDEN>&access_token_ttl=null&refresh_token_ttl=36000' },
     _response: undefined,
     _text: undefined,
     _json: null,
     _multipart: [] },
  originalMessage: 'request to https://platform.devtest.ringcentral.com/restapi/oauth/token failed, reason: getaddrinfo ENOTFOUND platform.devtest.ringcentral.com platform.devtest.ringcentral.com:443' }

Your network was down.

Could we leave this open for some continued testing please sir?
I am going to push this code to Heroku (where the network will not be down) and set this to be an active web dyno so it will not go down.
I'd like to run this test for the next 72 hours and report results here, just to be certain there aren't any issues with long-running subscriptions.

reason: getaddrinfo ENOTFOUND platform.devtest.ringcentral.com

This means either server was not accessible or network was down.

Understood, thank you.


Nits

Followup PR to address comments submitted after #941 went in.

Codecov Report

Merging #956 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #956   +/-   ##
=======================================
  Coverage   45.67%   45.67%
=======================================
  Files          28       28
  Lines        1990     1990
=======================================
  Hits          909      909
  Misses        901      901
  Partials      180      180

Impacted Files
Coverage Δ

core/mutator/entry/mutation.go
69.41% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


Proposal: Follow-up on Submitted Bounty for Kaia P2P Escrow Platforml]

Description

[dHey there victor,
I claimed the bounty on 28th Oct https://github.com/https://github.com/kaiachain/kaia-dapp-mono/issues/146 but haven’t received any feedback yet. I wanted to confirm if there’s anything else needed to move this forward. I’m looking forward to any updates and am happy to adjust the work if necessary.
Let me know
-Emmanuel

Bounty track

[add the name of the bounty track here]

One more spam issue and I will disqualify your submission immediately.

@zxstim alright, can you however respond so we can resolve this in a more collaborative manner

@zxstim I don't want to be one of those people who set up a bot to spam your github, or worse. Let's be collaborative. Thanks


Add ARM64 cross-compiling option on Windows

ARM64 is OK. ARM64EC is blocked by third party code defect (PR: https://github.com/mackron/dr_libs/pull/268)

ARM64 is OK. ARM64EC is blocked by third party code defect (PR: mackron/dr_libs#268)

Could we enable ARM64 firstly?

@yufenglee If ARM64 is enough, merging this PR would make it work on Windows. I don't see cross-compiling option on Linux in ORT itself, thouth.

@yufenglee If ARM64 is enough, merging this PR would make it work on Windows. I don't see cross-compiling option on Linux in ORT itself, though.

Let's go ahead with it.


Accent extended color in used already.

I am using shadcn-svelte and they have populated the accent extended color. I do not want to touch that. Instead, I want to make an extended color of green. My app works and the charts work because I changed the classes to use my green extended color. However, a little warning appears when I run pnpm dev
import { fontFamily } from "tailwindcss/defaultTheme";

/** @type {import('tailwindcss').Config} */
const config = {
	darkMode: ["class"],
	content: [
		'./src/**/*.{html,svelte,js,ts}',
		'./node_modules/svelte-ux/**/*.{svelte,js}',
		'./node_modules/layerchart/**/*.{svelte,js}',
	],
	safelist: ["dark"],
	theme: {
		container: {
			center: true,
			padding: "1rem",
			screens: {
				"2xl": "1400px"
			}
		},
		extend: {
			colors: {
				border: "hsl(var(--border) / <alpha-value>)",
				input: "hsl(var(--input) / <alpha-value>)",
				ring: "hsl(var(--ring) / <alpha-value>)",
				background: "hsl(var(--background) / <alpha-value>)",
				foreground: "hsl(var(--foreground) / <alpha-value>)",
				primary: {
					DEFAULT: "hsl(var(--primary) / <alpha-value>)",
					foreground: "hsl(var(--primary-foreground) / <alpha-value>)"
				},
				secondary: {
					DEFAULT: "hsl(var(--secondary) / <alpha-value>)",
					foreground: "hsl(var(--secondary-foreground) / <alpha-value>)"
				},
				destructive: {
					DEFAULT: "hsl(var(--destructive) / <alpha-value>)",
					foreground: "hsl(var(--destructive-foreground) / <alpha-value>)"
				},
				muted: {
					DEFAULT: "hsl(var(--muted) / <alpha-value>)",
					foreground: "hsl(var(--muted-foreground) / <alpha-value>)"
				},
				accent: {
					DEFAULT: "hsl(var(--accent) / <alpha-value>)",
					foreground: "hsl(var(--accent-foreground) / <alpha-value>)"
				},
				popover: {
					DEFAULT: "hsl(var(--popover) / <alpha-value>)",
					foreground: "hsl(var(--popover-foreground) / <alpha-value>)"
				},
				card: {
					DEFAULT: "hsl(var(--card) / <alpha-value>)",
					foreground: "hsl(var(--card-foreground) / <alpha-value>)"
				},
				green: {
					100: '#4EF18A',
					200: '#3BEA7A',
					300: '#2EE56B',
					400: '#25D95F',
					500: '#1FC953',
					600: '#1ABD49',
					700: '#16B23F',
					800: '#11A635',
					900: '#0D9B2B'
				}
			},
			borderRadius: {
				lg: "var(--radius)",
				md: "calc(var(--radius) - 2px)",
				sm: "calc(var(--radius) - 4px)"
			},
			fontFamily: {
				sans: [...fontFamily.sans]
			}
		}
	},
	plugins: [require('svelte-ux/plugins/tailwind.cjs')],
};

export default config;

warn - The utility [--color:theme(colors.accent.500)] contains an invalid theme value and was not generated.

Hi @pitzzahh 👋.  A few thoughts:
At the moment LayerChart (and Svelte UX) use a single statically defined accent color to add some theming.  Both projects have huge releases coming which move to a CSS variable theming, similar to shadcn, skeleton, and others.  They are both publishes as @next and all that remains is some dogfooding on some of my projects (and a few others have been as well) as well as writing docs.
You can see both of these versions in action here:

https://next.svelte-ux.pages.dev/
https://design-tokens.layerchart.pages.dev/

With that said, I'm also looking to understand and improve the interop stories between LayerChart and ShadCN / Skeleton as I have only experimented with each of these and use Svelte UX.
LayerChart has a very small dependency on Svelte UX, but 99% of it is under the hood, utilizing things like the cls() util.
With that said, the theme colors for Svelte UX (and which LayerChart can leverage) has been expanded to include..

primary-[50-900] and default
secondary-[50-900] and default
accent-[50-900] and default
neutral-[50-900] and default
info-[50-900] and default
success-[50-900] and default
warning-[50-900] and default
danger-[50-900] and default
surface-[100,200,300]
surface-content

You can see these theme colors on the new theme generator here.
With all that context, I think the interop between LayerChart and ShadCN will be much better.  While there is an accent color, it is

A CSS variable
You can change the color space to hsl(), rgb(), or oklch().  hsl() is the default, and is also what ShadCN uses

Reading your message closer... the warning [--color:theme(colors.accent.500)].  This is likely something you are doing explicitly, probably from copying one of the LayerChart examples.  Since ShadCN only registers the 1 value (accent) and not all shades (accent-100, accent-500, etc) as well as the DEFAULT (accent), this is why the error is coming up.  You should be able to change this to [--color:theme(colors.accent)]or reference the CSS variable directly usinghsl(var(--color-accent))`.  I've done this a lot in the new LayerChart docs, such as the Calendar example.
Hopefully that helps explain where things are going, and provide a solution for you now.

Hi @pitzzahh 👋. A few thoughts:
At the moment LayerChart (and Svelte UX) use a single statically defined accent color to add some theming. Both projects have huge releases coming which move to a CSS variable theming, similar to shadcn, skeleton, and others. They are both publishes as @next and all that remains is some dogfooding on some of my projects (and a few others have been as well) as well as writing docs.
You can see both of these versions in action here:

https://next.svelte-ux.pages.dev/
https://design-tokens.layerchart.pages.dev/

With that said, I'm also looking to understand and improve the interop stories between LayerChart and ShadCN / Skeleton as I have only experimented with each of these and use Svelte UX.
LayerChart has a very small dependency on Svelte UX, but 99% of it is under the hood, utilizing things like the cls() util.
With that said, the theme colors for Svelte UX (and which LayerChart can leverage) has been expanded to include..

primary-[50-900] and default
secondary-[50-900] and default
accent-[50-900] and default
neutral-[50-900] and default
info-[50-900] and default
success-[50-900] and default
warning-[50-900] and default
danger-[50-900] and default
surface-[100,200,300]
surface-content

You can see these theme colors on the new theme generator here.
With all that context, I think the interop between LayerChart and ShadCN will be much better. While there is an accent color, it is

A CSS variable
You can change the color space to hsl(), rgb(), or oklch().  hsl() is the default, and is also what ShadCN uses

Reading your message closer... the warning [--color:theme(colors.accent.500)]. This is likely something you are doing explicitly, probably from copying one of the LayerChart examples. Since ShadCN only registers the 1 value (accent) and not all shades (accent-100, accent-500, etc) as well as the DEFAULT (accent), this is why the error is coming up. You should be able to change this to [--color:theme(colors.accent)]or reference the CSS variable directly usinghsl(var(--color-accent))`. I've done this a lot in the new LayerChart docs, such as the Calendar example.
Hopefully that helps explain where things are going, and provide a solution for you now.

Hi, Thanks will try that. Yes, I did try out the Clipped area on Tooltip example and just modified the style class there. I'm just starting with this charting stuff and decided to try it. It is cool to use this when building charts with svelte.

Sounds good.  If you run into anymore issues, setting up a StackBlitz minimal repo and chatting on Discord can be helpful to troubleshoot.


Fail benchmarks when score is too low

Currently, benchmarks are considered to "pass" in Azure Pipelines if they execute without errors, but there's no minimum standard of speed. One needs to be added to catch performance regressions.

E-mailed jmh-dev with a feature request for JMH to do this, since scraping it from the output would be awkward.

I've tried the following methods of implementing my own minimum-score checking, and none of them work:

Throwing an AssertionError in main()
Calling System.exit(1) from main()
Declaring a @TearDown(Level.Trial) method with a parameter of type RunResult, Result<?> or BenchmarkResult.

Fixed in de1298cb.


What Are Refresh Tokens? When & How to Use Them

Heyy @raghunath-r-a ,  I'd like to take up this blog post!

Hey @McTechie This is now assigned to you. Please proceed with an outline and then drafting the blog post.
If you're stuck anywhere or having doubts, please do let us know.

Fixed in #778

Hi @McTechie We published your blog some time ago: https://www.loginradius.com/blog/async/guest-post/what-are-refresh-tokens-and-when-to-use-them/
I just thought to let you know in case you missed it.
Please do share it with your network and on social media!

Yess @raghunath-r-a, I did see the published blog and was super proud of myself for having written it! xD
P.s. Super glad to have contributed to this fabulous repository as well! Looking forward to further contributions to LoginRadius 🙌🏼


How to disable swipe/drag?

I need to disable swipe by drag and enable it only by click.
How can I make it?

I think you're looking for the enableTabsSwipe method here
ionViewDidLoad() {
  this.superTabs.enableTabsSwipe = false;
}

buttonClick() {
  this.superTabs.enableTabsSwipe = true;
}

Thank you


installation wiki update for plugins

Issue Description
The wiki pages for installation indicate to do
git submodule update --init moose
This will not install the plugins.
A change in the installation wiki ages is suggested.

For Change Control Board: Issue Review
This review should occur before any development is performed as a response to this issue.

[ ] 1. Is it tagged with a type: defect or improvement?
[ ] 2. Is it tagged with a priority: critical, normal or minor?
[ ] 3. If it will impact requirements or requirements tests, is it tagged with requirements?
[ ] 4. If it is a defect, can it cause wrong results for users? If so an email needs to be sent to the users.
[ ] 5. Is a rationale provided? (Such as explaining why the improvement is needed or why current code is wrong.)

For Change Control Board: Issue Closure
This review should occur when the issue is imminently going to be closed.

[ ] 1. If the issue is a defect, is the defect fixed?
[ ] 2. If the issue is a defect, is the defect tested for in the regression test system?  (If not explain why not.)
[ ] 3. If the issue can impact users, has an email to the users group been written (the email should specify if the defect impacts stable or master)?
[ ] 4. If the issue is a defect, does it impact the latest stable branch? If yes, is there any issue tagged with stable (create if needed)?
[ ] 5. If the issue is being closed without a merge request, has an explanation of why it is being closed been provided?

+1
Just re-installed RAVEN and stumbled over this again...

Fixed...
Closing


Parse empty number-dropdowns correctly

ie. ( v)

This is hard because currently we ignore spaces.


Add ability to use twig filters/functions

@Mosnar and @carlolaitano,
Here is a quick update to the plugin to use Twig extensions in the Craft templates. Can you guys chime in on these changes and provide any feedback?
Here are some example usages:
{{ elixir('css/app.css') }}

Or with the entire HTML tag:
{{ elixir('css/app.css', true) }}

{{ 'app.css' | elixir }}

Versus this, which I don't think its a good idea to deprecate yet.
{{ craft.elixir.version('app.css')

There are a few things to add, like documentation and to remove the required raw filter for rendering with the tag.

Also, this addresses #5

@themccallister So, the point of this is retrieve the latest version of a compiled asset from within a Twig template?

Actually, Craft 2.x is still on Twig 1.x. So these classes are still in use.
I'm going to make some more changes to the services class and push those soon.


Windows on a secondary display do not immediately appear in yabai -m query --windows

In previous builds, yabai -m query --windows contained windows across all spaces and displays. On the latest master it no longer finds windows on a secondary displays or unfocused spaces.

Running on 95b09be72648bb23dc18f557f438d338e7dbe84e on 12.3.1
I can provide further details if this isn't immediately reproducible.

Last working commit 08203a4fe5bb9676806864ff76f554dbafd43c00.

Fixed in latest commit. Just messed up with my linear allocation strategy; accidentally left padding in there.

Can confirm things are great again, thank you.


lbrynet-console fails to start

Ubuntu 14, LBRY 0.3.1
joe@joe-inspiron-1520:~/Downloads$ lbrynet-console
/usr/local/lib/python2.7/dist-packages/setuptools-4.0.1-py2.7.egg/pkg_resources.py:1045: UserWarning: /home/joe/.python-eggs is writable by group/others and vulnerable to attack when used with get_resource_filename. Consider a more secure location (set with .set_extraction_path or the PYTHON_EGG_CACHE environment variable).
:0: UserWarning: You do not have a working installation of the service_identity module: 'No module named service_identity'.  Please install it from <https://pypi.python.org/pypi/service_identity> and make sure all of its dependencies are satisfied.  Without the service_identity module and a recent enough pyOpenSSL to support it, Twisted can perform only rudimentary TLS client hostname verification.  Many valid certificate/hostname mappings may be rejected.
Loading databases...
Databases loaded.
Loading the wallet...
Traceback (most recent call last):
Failure: exceptions.ValueError: Failed to connect to network.

Closing this as its old; please re-open if it still persists on the most recent version (0.6.3)


[ETL-394] Update prod and dev account resources to use NAMESPACE

Purpose: This updates the prod stack configs to use namespaced files and stack names to mirror dev stack configs. This also organizes the stacks into namespaced folders and adds a new namespace feature for both dev and prod stack configs for the S3 to JSON job.

One point of discussion is if we should namespace JSON to parquet jobs as well (including the individual jobs) similar to BridgeDownstream or leave it like it is for recover since we'll only have one "study" (how we decide on staging production data might affect this later down the line)?

@rxu17 , @philerooski you can

Also did we want to have that discussion in the production testing jira ticket?


Delete links.googlenet

Since GoogLeNet is added to Chainer, this link does not need to exist in ChainerCV anymore.

LGTM.


Could we introduce a QuantitativeValueArray schema?

The suggestion to introduce a QuantitativeValueArray schema came up in the PR #177, but a decision was postponed to the next openMINDS revision.
A QuantitativeValueArray schema could be useful for simplifying the definition of larger numerical arrays (with no size limitation) where all values have the same unit.
The tricky think about this is the definition of the uncertainties of the value array which can either be a pair of numbers defining the same uncertainty for all values in the array, or an array of tuples with the same length as the array of values.
An array of tuples within JSON-Schema is defined the following way (I think):
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "exampleArrayOfTuples": {
      "type": "array",
      "items": {
      	"type": "array",
        "items": {
          "type": "number"
        },
        "minItems": 2,
        "maxItems": 2
      }
    },
    "exampleArrayOf2Numbers": {
      "type": "array",
      "items": {
      	"type": "number"
      },
      "minItems": 2,
      "maxItems": 2
    }
  }
}

In principle the "oneOf" keyword should allow the combination of both, but I'm unsure how to solve the different requirements of the array size for the two different items types (when combined).
Any ideas/suggestions?

@apdavison & @Peyman-N I think I need in particular your feedback for this one. Could you comment/make suggestions?

Let's revive this issue. @lzehl, I looked into tuple validation and it seems that the easiest option would be to use prefixItems. If I'm not mistaken, this predetermines an order within an array.
The example @lzehl gave in the PR #117 was this (numericalParameter with an array of quantitative values):
"name": "stimulusTriggerPoints",
"value": [1s, 2s, 4s]
Our quantitativeValue schema has:
value | 1-1 | number
uncertainty | 0 or 2 | number
typeOfuncertainty | 0 - 1 | controlledTerms/TypeOfUncertainty
unit | 0 - 1 | controlledTerms/UnitOfMeasurement

There would be two options a quantitativeValueArray could look like then:
Option 1: An array of 4-tuples with [value, uncertainty, typeOfUncertainty, unit].
This would make it possible to have an array of values with different units and types of uncertainty. This is basically like the old electrode and electrodeArray schemas:

Option 2: An array of 2-tuples with [value, uncertainty] and typeOfUncertainty and unit as additional properties (objects with 0-1).

{
"type": "array",
"prefixItems": [
{ "type": "number" },
{ "type": "string" },
{ "enum": ["Street", "Avenue", "Boulevard"] },
{ "enum": ["NW", "NE", "SW", "SE"] }
]
}

{
"_type": "https://openminds.ebrains.eu/core/QuantitativeValueArray",
"required": [
"value"
],
"properties": {
"value": {
"type": "number",
"_instruction": "Enter the measurement value of this quantitative value."
},
"uncertainty": {
"type": "array",
"maxItems": 2,
"minItems": 2,
"_instruction": "Enter the measurement uncertainty of this quantitative value.",
"items": {
"type": "number"
}
},
"typeOfUncertainty": {
"_instruction": "Add the type of uncertainty used for this quantitative value.",
"_linkedTypes": [
"https://openminds.ebrains.eu/controlledTerms/TypeOfUncertainty"
]
},
"unit": {
"_instruction": "Add the unit of measurement of this quantitative value.",
"_linkedTypes": [
"https://openminds.ebrains.eu/controlledTerms/UnitOfMeasurement"
]
}
}
}

Let's revive this issue. There is something called prefixItems, which could be useful in this context (see here for example: https://json-schema.org/understanding-json-schema/reference/array.html).
However, what was the point of having an array of values only allowing the same unit? Couldn't it be just like what we had for the electrode & electrodeArray schemas? Something like this:
{
  "_type": "https://openminds.ebrains.eu/core/QuantitativeValueArray",
  "required": [
    "quantitativeValues"
  ],
  "properties": {
    "quantitativeValues": {
      "type": "array",
      "minItems": 2,
      "uniqueItems": true,
      "_instruction": "Add two or more quantitative values that are part of this array.",
      "_linkedTypes": [
        "https://openminds.ebrains.eu/core/QuantitativeValue"
      ]
    }
  }
}

That would still make it possible to create a numericalParameter like @lzehl gave as example in the original PR #177 (where this request was raised):

"name": "stimulusTriggerPoints",
"value": [1s, 2s, 4s]

to revive this issue and combine it with a QuantitativeValueRange issue when looking at age:

keeping the same unit for all items in a list/in an array is the easiest solution for us
with age ranges this is a bit ugly if the range spans over new born (days) to adult (years)...

I still would go with keeping the same unit for all approach. @apdavison what do you think?

If you want different units, you can just use a list of QuantitativeValues, no?
The advantage of QuantitativeValueArray with a single unit is that the representation can be much more concise. (The use case I think is where the array has hundreds or thousands of values).
For the uncertainties, could we use a tuple of arrays rather than an array of tuples?

@apdavison I agree that the main use case for QuantitativeValueArray is to register arrays with large numbers of values. "unit" should be the same then for all values (to keep it simple).
For QuantitativeValueRange we also assume the same for min and max value. This could be changed to allow for more flexibility.
"For the uncertainties, could we use a tuple of arrays rather than an array of tuples?" you mean rather grouping all + uncertainties and all - uncertainties? this would only work under the assumption that the order of the arrays are preserved correct? Otherwise items that belong together muss be kept in an n-tuple, no?

@lzehl yes, this requires the assumption that array order is preserved. I think this is a reasonable assumption when dealing with arrays.

cf. #337


How set failover array DataApiClient ?

Hi,
rqlite is very light and great for building distributed databases in fast projects.
I have problems with rqlite-js about failover automation
when i set
const dataApiClient = new DataApiClient(['http://node1:4001','http://node2:4001','http://node3:4001'])

but when node1 is Down then wil fire Error: connect ECONNREFUSED and qlite-js not switch node2,
how to automatically failover when node die. This is an important feature for the distributed database client.
Thanks

It's possible that the client library doesn't support it yet. What is meant to happen is it should try another node in the list, if the current one is unreachable.
I'm not a Javascript programmer, so am unlikely to add this functionality myself. Perhaps someone else could contribute?

Hi,
Thanks for pointing out the issue in rqlite-js library, this is an error I
can add to the test cases.  Question, what is the expectation when a
network level error occurs?
The code could try the next node in the list and when all the nodes have
been exhausted the error will be thrown for the implementing code to
handle.  There is another option to retry the current node with an
exponential backoff to see it become available again before trying the next
node. Thoughts?
On Tue, Dec 8, 2020 at 5:18 AM otoolep<EMAIL_ADDRESS>wrote:

It's possible that the client library doesn't support it yet. What is
meant to happen is it should try another node in the list, if the current
one is unreachable.
I'm not a Javascript programmer, so am unlikely to add this functionality
myself. Perhaps someone else could contribute?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/rqlite/rqlite-js/issues/19#issuecomment-740585820,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAWDOXIKSAXPUH7MTUIEEILSTYKP3ANCNFSM4URP2YWA
.

--
Justin Morant
Phone:<PHONE_NUMBER>
Email<EMAIL_ADDRESS>

Hi,
I think all case except status 200, or redirect 301, 302 then retry again with backoff  then next
node.
I'm not a good programmer, so unfortunately I can't contribute code.

What are your thoughts on how to resolve this situation when the
unreachable node is the primary node and this is a write request? Switching
to another node will result in a redirect back to the down primary node.
Will another master eventually be elected so this situation would not occur?
On Thu, Dec 10, 2020, 12:57 AM tinamore<EMAIL_ADDRESS>wrote:

Hi,
I think all case except status 200, or redirect 301, 302 then retry again
with backoff then next
node.
I'm not a good programmer, so unfortunately I can't contribute code.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/rqlite/rqlite-js/issues/19#issuecomment-742339278,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAWDOXMDKTN6WRRC74B5NCTSUB5NHANCNFSM4URP2YWA
.

I guess this could happen, but to have a non-leader node return an address that is not a responsive leader would require a few things to happen:

leader goes down
follower hasn't yet realised leader has changed.

There is a small window during which this could happen, but it should resolve within seconds, right?

In other words a new leader will be elected, and some node (assuming that node is part of the cluster) will eventually be informed of the new leader (or perhaps become the leader itself).

If the network is functioning correctly and the leader actually went down that makes sense and trying another host would work. The error that was mentioned happens as frequently as a few times an hour in AWS between ECS containers and external hosts or even other containers in the stack I currently work on everyday.  The containers are docker containers running in multi AZ setup, not multi region (guessing that is even more often).  These containers receive high request rates and network requests can appear down for a single IP or host from the requesting container where everything else remains functional.  The destination IP or HOST that appears down is random and could be within AWS or external.  To recover from this case we have setup retries to the requested host with exponential back off and this causes the requests to eventually recovery in a at most a couple seconds.  Since that is a case I see all day long it creates the scenario which I describe.  If this were applied to Rqlite the other 2 nodes would issue redirects because they would see the master as still alive, but from the requesting container’s perspective the leader host is down.  This would mean the only valid responses would be redirects from the 2 non-leader nodes if I were to immediately fail to the next node in the Rqlite client.  Cassandra runs in a multi host setup, from the requesting container client this scenario was an issue with that driver as well. To go about this simply I could just try to fail to the next node with an exponential back off and even if I get redirected back to the same node this might delay it enough for the network to recover from the situation I described.  If I allow for a few attempts at switching to another node with back off it would act similar to a retry described. On Thu, Dec 10, 2020, 6:07 PM otoolep  wrote:In other words a new leader will be elected, and some node (assuming that node is part of the cluster) will eventually be informed of the new leader (or perhaps become the leader itself).—You are receiving this because you commented.Reply to this email directly, view it on GitHub, or unsubscribe.

OK, if you're talking about dealing with a flaky network generally, particularly between the client and the rqlite system, then yes, what you say makes perfect sense to me. Exponential back off and retry is a good approach.
Of course, rqlite doesn't bring anything special to this situation. The exact same policy would be a good one if you were dealing, with, say a single hosted MySQL instance in the cloud.

Hi,
Cloud seems expensive.
With rqlite, i can buy 3 vps cheap then i have a datatabse distributed, strong, also, with these 3 vps I can use this for other purposes.
Can you help me explain the difference between etcd and rqlite?
I like the small tools to use effectively.
Thanks.

@tinamore jqlite-js is v2.4.1 is now available in NPM including fail over retires with exponential back off.  Give it a try and let know if it work for you now.
If you want to discuss rqlite vs etcd please try the Google Group for more information https://groups.google.com/g/rqlite

Thank you all, for your contribution to rqlite.

@justinmorant rqlite-js is working for failover, thanks for update.
I have another problem with the auth feature, I don't want to create a new issuse
when i run rqlite client command line is working
rqlite -H http://admin@123456@node1

But when use auth in rqlite-js then show error:
Request failed with status code 401

My code example:
import pkg from 'rqlite-js';
const { DataApiClient } = pkg;

const username = 'admin'
const password = '123456'

const dataApiClient = new DataApiClient(['http://node1:4001','http://node2:4001','http://node3:4001'])

// You can initialize the client with auth in the URL instead of using the options
try {
  // Notice how we just added the username and password to the URL
  const sql = [
    'SELECT name FROM foo WHERE id="1"',
  ]
  const dataResults = await dataApiClient.query(sql, { auth: { username, password }})
  if (dataResults.hasError()) {
    const error = dataResults.getFirstError()
    console.error(error, 'rqlite insert results contained an error.')

  }
  console.log(dataResults.get(0).toString(), 'The results for the first select are in index 0')
  //console.log(dataResults.get(1).toString(), 'The results for the second select are in index 1')
} catch (e) {
  console.error(e, 'The HTTP client got an HTTP error, there must be something else going on.')
}

Thank you again.

@tinamore The document was incorrect and there was a bug in the code.
Please see the new documentation at https://github.com/rqlite/rqlite-js#authentication and try version 2.5.1 with fixes and tests.

@justinmorant thanks for update, but has another error.
Error:
TypeError: dataResults.hasError is not a function
    at file:///home/node/rqlite/rqlite.js:24:18
    at processTicksAndRejections (internal/process/task_queues.js:93:5) The HTTP client got an HTTP error, there must be something else going on.

My code example:
import pkg from 'rqlite-js';
const { DataApiClient } = pkg;
const username = 'admin';
const password = '123456';

const dataApiClient = new DataApiClient(['http://node1:4001','http://node2:4001','http://node3:4001'], {
  authentication: { username, password },
})

// You can initialize the client with auth in the URL instead of using the options

try {

  // Notice how we just added the username and password to the URL
  const sql = [
    'SELECT name FROM foo WHERE id="1"',

  ]
  //const dataResults = await dataApiClient.query(sql);

  const dataResults = await dataApiClient.query(sql);

 if (dataResults.hasError()) {
    const error = dataResults.getFirstError()
    console.error(error, 'rqlite insert results contained an error.')

  }
  console.log(dataResults.get(0).toString(), 'The results for the first select are in index 0')
  //console.log(dataResults.get(1).toString(), 'The results for the second select are in index 1')
} catch (e) {
  console.error(e, 'The HTTP client got an HTTP error, there must be something else going on.')
}

@tinamore fixed in 2.5.3 with tests added

Lib working great.
Thank you very much.


OVERVIEW: assigning profiles to end-points

Background
In Step 4 of the Alliander project, the end-points of the network are initialised with load profiles (also see https://github.com/quintel/etloader/issues/15). The user can manually assign load profiles but if the testing ground is created directly from a scenario in the ETM, we should give a decent starting position for the user. In other words: the computer should assign profiles to end-points with some 'intelligence'.
Two types of testing-grounds
Testing grounds come in two flavours:

Individual households are modelled
Groups of households are modelled

If the households are modelled individually, each connection of the network normally represents a household. Depending on the type of household (does it have heat pumps, solar PV, electric vehicles?), the computer should assign profiles to the connection and scale them appropriately.
If groups of households are modelled, the computer should combine multiple profiles (properly scaled) to represent the group.
Choosing the profiles
Not all households are the same. For that reason we have generated a series of profiles for all entries of the following matrix:
| Appartment | Terrace house ('Rijtjeshuis') | Detached house
------------ | ------------- | ------------- | -------------
Couple |A1 | A2 | A3 |
Family with two children  |B1 | B2 | B3 | |
2 Students  |C1 | C2 | C3 | |
Single person  |D1 | D2 | D3 | |
Where the types of houses have the following characteristics:

Appartment: 75m2, heat demand: 1000 cubic meter of gas (or 10 MWh) per year
Terrace house ('Rijtjeshuis'): 100m2, heat demand: 1500 cubic meter of gas (or 15 MWh) per year
Detached house: 150m2, heat demand: 2500 cubic meter of gas (or 25 MWh) per year

To choose profiles out of this matrix we need to keep into mind:

The total number of households needs to be equal to those in the scenario
The number of people in the households needs to be (more or less) equal to the people in the scenario
The distribution of households should more or less reflect a realistic situation

The first and second criteria seem rather straightforward. For the last one, we need to have some extra data. What are the odds of 2 students living in a detached house? A possible 'probability distribution' for the components in the matrix could be as follows:
| Appartment | Terrace house ('Rijtjeshuis') | Detached house
------------ | ------------- | ------------- | -------------
Couple |10% | 15% | 5% |
Family with two children  | 5% | 20% | 5% | |
2 Students  |10% | 9% | 1% | |
Single person  | 10%  | 5% | 5% | |
When choosing households from the matrix, the percentages describe the chance of picking that type of household.

@jorisberkhout @dennisschoenmakers @AlexanderWirtz @antw does the above make sense to you? Any clues on how to approach the data-angle of finding typical sizes and heating demands of housetypes in NL?

@jorisberkhout @dennisschoenmakers @AlexanderWirtz @antw does the above make sense to you?

For groups of households it absolutely does. I hope @AlexanderWirtz can provide the requested data clues.

For groups of households it absolutely does

@dennisschoenmakers why wouldn't it make sense for individual households? If you have 100 connections in a testing ground you still need to choose how many apartments and detached houses there are right?

For the data you should talk to Alliander, their database tries to list different kinds of dwellings for each connection, so they should be able to do some statistics for heating demands and they might be able to help you with the sizes as well.
@jorisberkhout does the HH source analysis for NL2012 contain anything about typical sizes etc?
I am not sure I understand how you plan to go about creating a testing grounds with the method described above. Do you generate it randomly using this probability distribution?

Putting this on-hold for now.

Closing this.


Clipmenu stops pasting selection

I have used clipmenu only for a couple of days but have run into one particular issue:
At some point, it will stop pasting what I select and only paste the top item.  I usually try many times, and try to use other lines, etc., and it seems erratic, pasting some selections but not others, etc.
I see this: "${CM_MAX_CLIPS=1000}" (pasted here with clipmenu, mind you!)
Is it 1000 lines or number of clips/snippets, something else?
This could be happening only when clipboard is full but not sure yet.

New instance
grep -FR 'config/WordPress.com' /run/user/1000/clipmenu.5.user
/run/user/1000/clipmenu.5.user/282955562 21:config/WordPress.com
/run/user/1000/clipmenu.5.user/line_cache_clipboard:1522967301360861262 ~/.config/WordPress.com
/run/user/1000/clipmenu.5.user/line_cache_primary:1522967285671467287 ~/.config/WordPress.com
/run/user/1000/clipmenu.5.user/line_cache_primary:1522969299355901577 config/WordPress.com%

That paste seems not to exist. What's the file clipmenu tried to access that didn't exist?
stef204 writes:

New instance
grep -FR 'config/WordPress.com' /run/user/1000/clipmenu.5.user
/run/user/1000/clipmenu.5.user/282955562 21:config/WordPress.com
/run/user/1000/clipmenu.5.user/line_cache_clipboard:1522967301360861262 ~/.config/WordPress.com
/run/user/1000/clipmenu.5.user/line_cache_primary:1522967285671467287 ~/.config/WordPress.com
/run/user/1000/clipmenu.5.user/line_cache_primary:1522969299355901577 config/WordPress.com%
--
You are receiving this because you commented.
Reply to this email directly or view it on GitHub:
https://github.com/cdown/clipmenu/issues/73#issuecomment-379103428

@cdown Please delete your last comment (AND this one) and I will post the issue again with the grep FR as soon as it occurs again (likely today.) Thanks.

(comment deleted upon request)

Here is one.
And here is the grep FR

I believe 0364087d6441575899b0c42b4cdc0d18b9b88564 fixes this. Can you test it out for a few days and let me know if it resolves the issue? :-) Thanks!

Also cc @kaihendry who was having similar issues

Thanks Chris! Do you have a quick tip to modify https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=clipmenu so that I can test this branch?

You should be able to test with this PKGBUILD:
# Maintainer: Chris Down<EMAIL_ADDRESS>
pkgname=clipmenu
pkgver=5.1.0
pkgrel=1
pkgdesc='Clipboard management using dmenu'
url='http://github.com/cdown/clipmenu'
arch=('any')
license=('Public Domain')
depends=(dmenu xsel clipnotify)
conflicts=(clipmenu-git)  # Old package from pre-AUR4 days

source=("https://github.com/cdown/clipmenu/archive/deletion_bug_1.zip")
md5sums=('6fd9b534127012d6b8202aa3aedc1844')

package() {
    install -D -m755 \
        "${srcdir?}/$pkgname-deletion_bug_1/clipmenu" \
        "${pkgdir?}/usr/bin/clipmenu"
    install -D -m755 \
        "${srcdir?}/$pkgname-deletion_bug_1/clipmenud" \
        "${pkgdir?}/usr/bin/clipmenud"
    install -D -m644 \
        "${srcdir?}/$pkgname-deletion_bug_1/init/clipmenud.service" \
        "${pkgdir?}/usr/lib/systemd/user/clipmenud.service"
}

Same selection issue FATAL: .. not in cache
[hendry@t480s ~]$ cd /run/user/1000/clipmenu.5.hendry/
[hendry@t480s clipmenu.5.hendry]$ grep -r CSC .
./177862433 12:CSC Loyang(
./1074766712 9:CSC Loya
./line_cache_primary:1523097259506416042 CSC Loyang(
./line_cache_primary:1523097260711142961 CSC Loyang
./line_cache_clipboard:1523097262864155235 CSC Loyang
[hendry@t480s clipmenu.5.hendry]$ pacman -Ql clipmenu
clipmenu /usr/
clipmenu /usr/bin/
clipmenu /usr/bin/clipmenu
clipmenu /usr/bin/clipmenud
clipmenu /usr/lib/
clipmenu /usr/lib/systemd/
clipmenu /usr/lib/systemd/user/
clipmenu /usr/lib/systemd/user/clipmenud.service
[hendry@t480s clipmenu.5.hendry]$ cd
[hendry@t480s ~]$ vim /usr/bin/clipmenu
[hendry@t480s ~]$ cd
[hendry@t480s ~]$ cd
[hendry@t480s ~]$ cd tmp/dwm/
[hendry@t480s dwm]$ vim config.h
[hendry@t480s dwm]$ cd
[hendry@t480s ~]$ whereis clipmenu
clipmenu: /usr/bin/clipmenu
[hendry@t480s ~]$ clipmenu
FATAL: CSC Loyang not in cache
[hendry@t480s ~]$ pacman -Qi clipmenu
Name            : clipmenu
Version         : 5.1.0-1
Description     : Clipboard management using dmenu
Architecture    : any
URL             : http://github.com/cdown/clipmenu
Licenses        : Public Domain
Groups          : None
Provides        : None
Depends On      : dmenu  xsel  clipnotify
Optional Deps   : None
Required By     : None
Optional For    : None
Conflicts With  : clipmenu-git
Replaces        : None
Installed Size  : 11.00 KiB
Packager        : Unknown Packager
Build Date      : Sun 08 Apr 2018 08:34:18 AM
Install Date    : Sun 08 Apr 2018 08:34:19 AM
Install Reason  : Explicitly installed
Install Script  : No
Validated By    : None

[hendry@t480s ~]$

As mentioned, I need to see bash -x "$(command -v clipmenud)" when this happens, as otherwise it's impossible to know what it actually expected vs. what was available

I'll also add it to the FATAL message for an upcoming release

[hendry@t480s ~]$ bash -x "$(command -v clipmenu)"
+ : dmenu
+ : /run/user/1000
+ major_version=5
+ shopt -s nullglob
+ cache_dir=/run/user/1000/clipmenu.5.hendry
+ cache_file_prefix=/run/user/1000/clipmenu.5.hendry/line_cache
+ [[ '' == --help ]]
+ [[ '' == -h ]]
+ [[ dmenu == rofi ]]
+ [[ dmenu == rofi-script ]]
++ list_clips
++ dmenu -l 8
++ LC_ALL=C
++ sort -rnk 1
++ cat /run/user/1000/clipmenu.5.hendry/line_cache_clipboard /run/user/1000/clipmenu.5.hendry/line_cache_primary /dev/null
++ cut '-d ' -f2-
++ awk '!seen[$0]++'
+ chosen_line='CSC Loyang'
+ [[ -n CSC Loyang ]]
++ cksum
+ file='/run/user/1000/clipmenu.5.hendry/619706596 11'
+ [[ -f /run/user/1000/clipmenu.5.hendry/619706596 11 ]]
+ printf 'FATAL: %s not in cache\n' 'CSC Loyang'
FATAL: CSC Loyang not in cache
+ exit 2
[hendry@t480s ~]$
[hendry@t480s ~]$ cat /run/user/1000/clipmenu.5.hendry/619706596
cat: /run/user/1000/clipmenu.5.hendry/619706596: No such file or directory
[hendry@t480s ~]$ grep 'CSC Loyang' /run/user/1000/clipmenu.5.hendry/*
/run/user/1000/clipmenu.5.hendry/1044873404 35:./line_cache_primary:1523097259506416042 CSC Loyang(
/run/user/1000/clipmenu.5.hendry/1044873404 35:./line_cache_primary:1523097260711142961 CSC Loyang
/run/user/1000/clipmenu.5.hendry/1044873404 35:./line_cache_clipboard:1523097262864155235 CSC Loyang
/run/user/1000/clipmenu.5.hendry/1044873404 35:FATAL: CSC Loyang not in cache
/run/user/1000/clipmenu.5.hendry/177862433 12:CSC Loyang(
/run/user/1000/clipmenu.5.hendry/2490308208 62:+ chosen_line='CSC Loyang'
/run/user/1000/clipmenu.5.hendry/2490308208 62:+ [[ -n CSC Loyang ]]
/run/user/1000/clipmenu.5.hendry/2490308208 62:+ printf 'FATAL: %s not in cache\n' 'CSC Loyang'
/run/user/1000/clipmenu.5.hendry/2490308208 62:FATAL: CSC Loyang not in cache
/run/user/1000/clipmenu.5.hendry/3203152914 46:+ chosen_line='CSC Loyang'
/run/user/1000/clipmenu.5.hendry/3203152914 46:+ [[ -n CSC Loyang ]]
/run/user/1000/clipmenu.5.hendry/3203152914 46:+ printf 'FATAL: %s not in cache\n' 'CSC Loyang'
/run/user/1000/clipmenu.5.hendry/3203152914 46:FATAL: CSC Loyang not in cache
/run/user/1000/clipmenu.5.hendry/45617049 25: CSC Loyang not in cache
/run/user/1000/clipmenu.5.hendry/619706596 11:CSC Loyang
/run/user/1000/clipmenu.5.hendry/line_cache_clipboard:1523097262864155235 CSC Loyang
/run/user/1000/clipmenu.5.hendry/line_cache_clipboard:1523182198206060452 FATAL: CSC Loyang not in cache
/run/user/1000/clipmenu.5.hendry/line_cache_clipboard:1523233748215523210 CSC Loyang
/run/user/1000/clipmenu.5.hendry/line_cache_primary:1523097259506416042 CSC Loyang(
/run/user/1000/clipmenu.5.hendry/line_cache_primary:1523097260711142961 CSC Loyang
/run/user/1000/clipmenu.5.hendry/line_cache_primary:1523182197539370431 FATAL: CSC Loyang not in cache
/run/user/1000/clipmenu.5.hendry/line_cache_primary:1523182208016423861 CSC Loyang
/run/user/1000/clipmenu.5.hendry/line_cache_primary:1523233748262785289 CSC Loyang
[hendry@t480s ~]$ cat '/run/user/1000/clipmenu.5.hendry/619706596 11'
CSC Loyang[hendry@t480s ~]$ [[ -f /run/user/1000/clipmenu.5.hendry/619706596 11 ]] && echo yay
-bash: syntax error in conditional expression
-bash: syntax error near `11'

Don't quite understand '/run/user/1000/clipmenu.5.hendry/619706596 11' What does the 11 mean? Why is there a space? Why is there a need for a _cache?

Quick interim report: seems OK so far, don't believe have run into same problem (although there might have been an instance today but could not check it.)
Will continue to run the debug version and report here.  So far, loads better.

@kaihendry

Don't quite understand '/run/user/1000/clipmenu.5.hendry/619706596 11' What does the 11 mean?

Quoting is not rendered properly with bash -x and [[. This is direct output from cksum, 11 is the length.
Something weird is going on in your case. What's the output of stat '/run/user/1000/clipmenu.5.hendry/619706596 11' and [[ -f '/run/user/1000/clipmenu.5.hendry/619706596 11' ]] && echo $?
@stef204 Great!

[hendry@t480s ~]$ stat '/run/user/1000/clipmenu.5.hendry/619706596 11'
  File: /run/user/1000/clipmenu.5.hendry/619706596 11
  Size: 10              Blocks: 8          IO Block: 4096   regular file
Device: 33h/51d Inode: 5763489     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/  hendry)   Gid: (  985/   users)
Access: 2018-04-09 08:29:17.061985488 +0800
Modify: 2018-04-09 08:29:08.266884746 +0800
Change: 2018-04-09 08:29:08.266884746 +0800
 Birth: -
[hendry@t480s ~]$ cat '/run/user/1000/clipmenu.5.hendry/619706596 11'
CSC Loyang[hendry@t480s ~]$ [[ -f '/run/user/1000/clipmenu.5.hendry/619706596 11' ]]; echo $?
0
[hendry@t480s ~]$

hmmm.... just tried again:
[hendry@t480s ~]$ bash -x "$(command -v clipmenu)"
+ : dmenu
+ : /run/user/1000
+ major_version=5
+ shopt -s nullglob
+ cache_dir=/run/user/1000/clipmenu.5.hendry
+ cache_file_prefix=/run/user/1000/clipmenu.5.hendry/line_cache
+ [[ '' == --help ]]
+ [[ '' == -h ]]
+ [[ dmenu == rofi ]]
+ [[ dmenu == rofi-script ]]
++ list_clips
++ dmenu -l 8
++ LC_ALL=C
++ sort -rnk 1
++ cut '-d ' -f2-
++ awk '!seen[$0]++'
++ cat /run/user/1000/clipmenu.5.hendry/line_cache_clipboard /run/user/1000/clipmenu.5.hendry/line_cache_primary /dev/null
+ chosen_line='CSC Loyang'
+ [[ -n CSC Loyang ]]
++ cksum
+ file='/run/user/1000/clipmenu.5.hendry/619706596 11'
+ [[ -f /run/user/1000/clipmenu.5.hendry/619706596 11 ]]
+ for selection in clipboard primary
+ xsel --logfile /dev/stderr -i --clipboard
+ for selection in clipboard primary
+ xsel --logfile /dev/stderr -i --primary
[hendry@t480s ~]$ CSC Loyang

Still present, unfortunately.  I couldn't get the output of bash -x "$(command -v clipmenu)" to paste or link to but basically looks same as before.  Will do it again likely today and make sure to get output + grep -FR and link to it here.

https://s.natalian.org/2018-04-12/1523515878.mp4
https://s.natalian.org/2018-04-12/1523516102.mp4

I have the feeling it gets triggered when I have two similar selections..

It's possible that there is also a bug somewhere in the possible partial detection/mitigation code. I'll take a look later today.

Same problem again: https://s.natalian.org/2018-04-13/1523582975.mp4
Need to figure out the ~/.config/systemd/user/ systemctl --user status clipmenud environment variable override with CM_DEBUG set.

[Service]
...
ENVIRONMENT=CM_DEBUG=1

In the video I also see other errors about not being able to remove files because they never existed: this makes me even more suspicious that this directory is being cleaned externally

CM_MAX_CLIPS caught me by surprise. This definitely seems indicative of something that's wrong https://s.natalian.org/2018-04-18/clipmenud.log
Is there an explanation of line_cache_clipboard and line_cache_primary ? I'm confused how it can even show up in dmenu see. Couldn't this extra state be avoided?

Can you test with the merge from #76 applied? :-)

Testing with
pkgname=clipmenu
pkgver=5.1.0.r7.g95cf774
pkgrel=1
pkgdesc='Clipboard management using dmenu'
url='http://github.com/cdown/clipmenu'
arch=('any')
license=('Public Domain')
depends=(dmenu xsel clipnotify)
conflicts=(clipmenu-git)  # Old package from pre-AUR4 days

source=("git://github.com/cdown/clipmenu.git#branch=develop")
md5sums=('SKIP')

pkgver() {
    cd "$pkgname"
    git describe --long --tags | sed -r 's/([^-]*-g)/r\1/;s/-/./g'
}

package() {
    install -D -m755 \
        "${srcdir?}/$pkgname/clipmenu" \
        "${pkgdir?}/usr/bin/clipmenu"
    install -D -m755 \
        "${srcdir?}/$pkgname/clipmenud" \
        "${pkgdir?}/usr/bin/clipmenud"
    install -D -m644 \
        "${srcdir?}/$pkgname/init/clipmenud.service" \
        "${pkgdir?}/usr/lib/systemd/user/clipmenud.service"
}


Update readme

hey @carletex - as we chatted added the table of contents & some edits to the readme. lmk what you think!

Love the updated readme :+1:

hey @carletex & @sverps! Thanks for the suggestions I've made the changes.
Some extra things that came to mind:

We can add a license to the project. (the MIT License?)
Add key features sections that provides a more detailed overview of the key features of your project

what do you think?

Great!

We can add a license to the project. (the MIT License?)

Just added it on #241

Add key features sections that provides a more detailed overview of the key features of your project

Maybe we could explain somewhere how the "tinkering loop" (tweak contract / deploy locally / Contract UI page) works... and some docs for our custom hooks (specially the useScaffoldContractRead / Write).
We can define it better on the issue & then creating another PR. Merging this now!
Thanks!


Missing changelog translation for clinic

Thanks for creating an issue! Please fill out this form so we can be sure to have all the information we need, and to minimize back and forth.

What are we trying to do?

I clicked into a random patient's changelog in sandbox and saw this:

That seems like bad news! Let's fix it.

What feature or behavior is this required for?

Error messages are displaying in routine use of the app, and that's Bad News.

How could we solve this issue? (Not knowing is okay!)

I believe we can resolve this by adding translations to en.yml under mongoid.attributes.patient.clinic_id, but there might be a cleaner way to do it. Your choice on how to fix!

Anything else?

To recreate:

make a new patient
set their clinic
reload the page
click into changelog

I'm picking this one up!


[Bug] Walkers align into grids with most processors

Steps to reproduce

Open WalkerSim.exe
Set the population density to 2000 (so that the effect is more easily seen)
Select Navezgane from the maps dropdown (so that you have a frame of reference for the scales involved)
Remove all processors
Add any group processor (e.g. FlockSameGroup) with power 10 and distance 750
Set the simulation speed to 256x
Start the simulation
Wait

Expected result
Zombies should distribute according to their processors.  For example, FlockSameGroup should result in clustering.
Actual result
Zombies align themselves into a grid pattern, as seen in the attached screenshot.

Additional
Here's a list of processors that formed a grid:

FlockAnyGroup
AlignAnyGroup
AvoidAnyGroup
FlockOtherGroup
AlignOtherGroup
AvoidOtherGroup
FlockSameGroup
AlignSameGroup
AvoidSameGroup
Wind
WindInverted
StickToRoads
AvoidRoads
AvoidPOIs
WorldEvents

Processors that didn't form a grid:

AlignOtherGroup doesn't quite make the whole grid, though it does form a solid box around the edges of the map
StickToPOIs appears to behave correctly

You have set a maximum distance to 750 so thats how far it will go querying the neighbouring cells. The neighboring query is also limited due to performance reasons.


socket.gaierror: [Errno -2] Name or service not known

Context

Using Azure IoT Edge 1.4
OS and version used: Ubuntu 20.04
Python version: 3.9

Description of the issue
Hello guys,
HI have been having that same issue for a long time now, and only on python modules, most of the time the module cannot start, whenever the module is hard shutdown, without executing the shutdown function, for example when the device is unplugged. After many retries it finally succeeds, but sometimes it takes hours of restarts
Code sample exhibiting the issue
main.py
##################################
# Main function / Env settler
##################################
def main():
    """ Main function.
    Is used to setup the whole module.
    """

    if not sys.version >= "3.5.3":
        raise Exception( "The module requires python 3.5.3+. Current version of Python: %s" % sys.version )
    log("IoT Hub Client for Python" )
    time.sleep(5)

    # NOTE: Client is implicitly connected due to the handler being set on it
    client = create_client()

    # Define a handler to cleanup when module is is terminated by Edge
    def module_termination_handler(signal, frame):
        log("IoTHubClient stopped by Edge")
        stop_event.set()

    # Set the Edge termination handler
    signal.signal(signal.SIGTERM, module_termination_handler)

    # Run
    loop = asyncio.get_event_loop()
    try:
        loop.run_until_complete(run_module(client))
    except Exception as e:
        log("Unexpected error %s " % e)
        raise
    finally:
        log("Shutting down IoT Hub Client...")
        loop.run_until_complete(client.shutdown())
        loop.stop()
        loop.close()

if __name__ == "__main__":
    main()

As I saw in another post, try to add time.sleep(5), but didn't work
Console log of the issue
Before adding the time.sleep(5)
2024-10-15T06:14:46.631787      - IoT Hub Client for Python
Subscribe for input failed.  Not enabling feature
Traceback (most recent call last):
2024-10-15T06:14:47.166569      - Exception occured in create client: {ex}
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/common/mqtt_transport.py", line 396, in connect
    host=self._hostname, port=8883, keepalive=self._keep_alive
  File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 914, in connect
    return self.reconnect()
  File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 1044, in reconnect
    sock = self._create_socket_connection()
  File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 3685, in _create_socket_connection
    return socket.create_connection(addr, timeout=self._connect_timeout, source_address=source)
  File "/usr/local/lib/python3.7/socket.py", line 707, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
  File "/usr/local/lib/python3.7/socket.py", line 752, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_clients.py", line 33, in handle_result
    return await callback.completion()
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/common/async_adapter.py", line 94, in completion
    return await self.future
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/common/pipeline/pipeline_stages_mqtt.py", line 193, in _run_op
    self.transport.connect(password=password)
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/common/mqtt_transport.py", line 418, in connect
    raise exceptions.ConnectionFailedError(cause=e)
azure.iot.device.common.transport_exceptions.ConnectionFailedError: ConnectionFailedError(None) caused by gaierror(-2, 'Name or service not known')

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "./main.py", line 510, in <module>
    main()
  File "./main.py", line 482, in main
    client = create_client()
  File "./main.py", line 367, in create_client
    client.on_message_received = receive_message_handler
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_clients.py", line 740, in on_message_received
    self._generic_receive_handler_setter("on_message_received", constant.INPUT_MSG, value)
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_clients.py", line 483, in _generic_receive_handler_setter
    fut.result()
  File "/usr/local/lib/python3.7/concurrent/futures/_base.py", line 435, in result
    return self.__get_result()
  File "/usr/local/lib/python3.7/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_clients.py", line 106, in _enable_feature
    await handle_result(callback)
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_clients.py", line 37, in handle_result
    raise exceptions.ConnectionFailedError(message="Could not connect to IoTHub", cause=e)
azure.iot.device.exceptions.ConnectionFailedError: ConnectionFailedError('Could not connect to IoTHub') caused by ConnectionFailedError(None)
Task was destroyed but it is pending!
task: <Task pending coro=<AsyncHandlerManager._receiver_handler_runner() running at /usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_handler_manager.py:43> wait_for=<Future pending cb=[_chain_future.<locals>._call_check_cancel() at /usr/local/lib/python3.7/asyncio/futures.py:351, <TaskWakeupMethWrapper object at 0xffffa9431d90>()]> cb=[_chain_future.<locals>._call_set_state() at /usr/local/lib/python3.7/asyncio/futures.py:358]>
Task was destroyed but it is pending!
task: <Task pending coro=<_AsyncQueueProxy.get() running at /usr/local/lib/python3.7/site-packages/janus/__init__.py:451> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0xffffa9431f90>()]> cb=[_chain_future.<locals>._call_set_state() at /usr/local/lib/python3.7/asyncio/futures.py:358]>

After adding the time.sleep(5)
2024-10-15T06:43:55.443170      - IoT Hub Client for Python
Subscribe for input failed.  Not enabling feature
2024-10-15T06:44:02.129833      - Exception occured in create client: {ex}
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/common/mqtt_transport.py", line 396, in connect
    host=self._hostname, port=8883, keepalive=self._keep_alive
  File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 914, in connect
    return self.reconnect()
  File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 1044, in reconnect
    sock = self._create_socket_connection()
  File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 3685, in _create_socket_connection
    return socket.create_connection(addr, timeout=self._connect_timeout, source_address=source)
  File "/usr/local/lib/python3.7/socket.py", line 728, in create_connection
    raise err
  File "/usr/local/lib/python3.7/socket.py", line 716, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_clients.py", line 33, in handle_result
    return await callback.completion()
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/common/async_adapter.py", line 94, in completion
    return await self.future
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/common/pipeline/pipeline_stages_mqtt.py", line 193, in _run_op
    self.transport.connect(password=password)
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/common/mqtt_transport.py", line 418, in connect
    raise exceptions.ConnectionFailedError(cause=e)
azure.iot.device.common.transport_exceptions.ConnectionFailedError: ConnectionFailedError(None) caused by ConnectionRefusedError(111, 'Connection refused')

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "./main.py", line 511, in <module>
    main()
  File "./main.py", line 483, in main
    client = create_client()
  File "./main.py", line 367, in create_client
    client.on_message_received = receive_message_handler
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_clients.py", line 740, in on_message_received
    self._generic_receive_handler_setter("on_message_received", constant.INPUT_MSG, value)
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_clients.py", line 483, in _generic_receive_handler_setter
    fut.result()
  File "/usr/local/lib/python3.7/concurrent/futures/_base.py", line 435, in result
    return self.__get_result()
  File "/usr/local/lib/python3.7/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_clients.py", line 106, in _enable_feature
    await handle_result(callback)
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_clients.py", line 37, in handle_result
    raise exceptions.ConnectionFailedError(message="Could not connect to IoTHub", cause=e)
azure.iot.device.exceptions.ConnectionFailedError: ConnectionFailedError('Could not connect to IoTHub') caused by ConnectionFailedError(None)
Task was destroyed but it is pending!
task: <Task pending coro=<AsyncHandlerManager._receiver_handler_runner() running at /usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_handler_manager.py:43> wait_for=<Future pending cb=[_chain_future.<locals>._call_check_cancel() at /usr/local/lib/python3.7/asyncio/futures.py:351, <TaskWakeupMethWrapper object at 0xffff83500f50>()]> cb=[_chain_future.<locals>._call_set_state() at /usr/local/lib/python3.7/asyncio/futures.py:358]>
Task was destroyed but it is pending!
task: <Task pending coro=<_AsyncQueueProxy.get() running at /usr/local/lib/python3.7/site-packages/janus/__init__.py:451> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0xffff83500e90>()]> cb=[_chain_future.<locals>._call_set_state() at /usr/local/lib/python3.7/asyncio/futures.py:358]>

I tried to force the repeatability by disabling the shutdown functions and termination signal.
I saw somewhere that a test to make is to ping the hostname before it tries to create the client, that it might be because it cannot access edgeHub, but after few restarts, it failed even after a successful ping, but with a different error 'Connection refused':
Subscribe for input failed.  Not enabling feature
2024-10-15T08:14:25.873468      - Exception occured in create client: {ex}
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/common/mqtt_transport.py", line 396, in connect
    host=self._hostname, port=8883, keepalive=self._keep_alive
  File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 914, in connect
    return self.reconnect()
  File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 1044, in reconnect
    sock = self._create_socket_connection()
  File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 3685, in _create_socket_connection
    return socket.create_connection(addr, timeout=self._connect_timeout, source_address=source)
  File "/usr/local/lib/python3.7/socket.py", line 728, in create_connection
    raise err
  File "/usr/local/lib/python3.7/socket.py", line 716, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_clients.py", line 33, in handle_result
    return await callback.completion()
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/common/async_adapter.py", line 94, in completion
    return await self.future
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/common/pipeline/pipeline_stages_mqtt.py", line 193, in _run_op
    self.transport.connect(password=password)
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/common/mqtt_transport.py", line 418, in connect
    raise exceptions.ConnectionFailedError(cause=e)
azure.iot.device.common.transport_exceptions.ConnectionFailedError: ConnectionFailedError(None) caused by ConnectionRefusedError(111, 'Connection refused')

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "./main.py", line 521, in <module>
    main()
  File "./main.py", line 490, in main
    client = create_client()
  File "./main.py", line 367, in create_client
    client.on_message_received = receive_message_handler
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_clients.py", line 740, in on_message_received
    self._generic_receive_handler_setter("on_message_received", constant.INPUT_MSG, value)
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_clients.py", line 483, in _generic_receive_handler_setter
    fut.result()
  File "/usr/local/lib/python3.7/concurrent/futures/_base.py", line 435, in result
    return self.__get_result()
  File "/usr/local/lib/python3.7/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_clients.py", line 106, in _enable_feature
    await handle_result(callback)
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_clients.py", line 37, in handle_result
    raise exceptions.ConnectionFailedError(message="Could not connect to IoTHub", cause=e)
azure.iot.device.exceptions.ConnectionFailedError: ConnectionFailedError('Could not connect to IoTHub') caused by ConnectionFailedError(None)
Task was destroyed but it is pending!
task: <Task pending coro=<AsyncHandlerManager._receiver_handler_runner() running at /usr/local/lib/python3.7/site-packages/azure/iot/device/iothub/aio/async_handler_manager.py:43> wait_for=<Future pending cb=[_chain_future.<locals>._call_check_cancel() at /usr/local/lib/python3.7/asyncio/futures.py:351, <TaskWakeupMethWrapper object at 0xffffa010be90>()]> cb=[_chain_future.<locals>._call_set_state() at /usr/local/lib/python3.7/asyncio/futures.py:358]>
Task was destroyed but it is pending!
task: <Task pending coro=<_AsyncQueueProxy.get() running at /usr/local/lib/python3.7/site-packages/janus/__init__.py:451> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0xffffa010bc10>()]> cb=[_chain_future.<locals>._call_set_state() at /usr/local/lib/python3.7/asyncio/futures.py:358]>


Maya: Xgen version mismatch after publish - OP-6204

Changelog Description
Xgen was not updating correctly when for example adding or removing descriptions. This resolve the issue by overwritting the workspace xgen file.
Testing notes:

Publish Xgen v1 with 1 description.
Load in a new Maya scene and save the workfile.
Make any changes on the description.
Publish Xgen v2 with 2 descriptions.
Update Xgen and validate both descriptions are present plus any changes.

Task linked: OP-6204 Maya: Xgen version mismatch after publish

When testing and trying to Publish new version of Groom (deleted one of the descriptions via Xgen toolkit) it gets error because of Integrate Hero version.
I will continue without hero version but put it here too (to keep track of this issue)

When testing and trying to Publish new version of Groom (deleted one of the descriptions via Xgen toolkit) it gets error because of Integrate Hero version.
I will continue without hero version but put it here too (to keep track of this issue)
If turned Hero version off before Publish no errors shown.

Looks like you're using that alembic somewhere at the point of publishing.

I have also tested going up and down with Xgen versions. All seems ok and updates properly.


Error and Report buttons

Problem description
When the user uploads a file and it contains errors, it is possible to explore errors by looking at the table on the screen. He/She/They can also click on the ERROR button which is located below the main menu. This will only select cells with validation errors. If the user clicks on  the REPORT button instead, he/she/they will get the same summary (cells with errors) and only when clicking on TYPE error, the ODE will display the error text report.
Steps to reproduce it

Open the ODE.
Upload a csv with errors.
Look at the screens listed below..

Screen 1: Red button at the top shows the file contains errors but errors are not shown on the table

Note: if the user clicks on the red ERROR button at the top of the screen, nothing happens.
Screen 2: by clicking on the error button on the menu...

The ODE only shows rows containing errors

Screen 3: the user clicks on REPORT and the ODE displays a summary of rows with errors. This is the same information the user can explore when clicking on the Errors button (screen 2).

However, when clicking on TYPE ERROR, the ODE shows a text summary of all errors

Suggested solution
When a user upload a file with errors, he/she/they can click on the main ERROR button at the top of the ODE. First click, the ODE will ONLY show rows with errors. Second click, full table, without showing errors (the button wil keep its red color in both cases because the file contains errors).

Replace ERROR button in the menu with Errors report.  The Error report button will give the user a text summary of all errors.
Remove the REPORT button.

I'm closing this ticket because we will address the Errors report feature (with changes) in a new one.


Unable to commit my message in my branch.

I have written code to Shift the FFT data. I am unable to commit message.
Error showing: A file with the same name already exists. Please choose a different name and try again.
I tried to change name as well, but still getting same response.

Thats because laserlab already made a preparation.py file did you create a new one or edit the preexisting one?

Yeah, I changed now.


missing php extensions in composer.json

I noticed that the framework uses ctype_*, mb_*, hash_*, json_*, session_*  which are part of the ctype, mbstring, json, session & hash extensions.
These extensions are not in the composer.json require section.
    "require": {
....
        "ext-ctype": "*",
        "ext-hash": "*",
        "ext-json":  "*",
        "ext-mbstring": "*",
        "ext-session":  "*",

Maybe it would be good to add them?

Well, yes and no.
One could use the framework without the need for any of the above extensions, as they are used in certain files. For those, the composer installation could fail if they lack at least one of the mentioned PHP extensions in require.

Maybe then put it in "suggest"?
I saw mbstring  and iconv are not mandatory. The others depend on whichever lib of ci is used?

I saw mbstring and iconv are not mandatory. The others depend on whichever lib of ci is used?

I think currently is not really mandatory to require those in composer. CI is very flexible on this


Austin/histogram

For #3, committing the first step in building a histogram. Takes an Iterable and number of bins (defaulted to 10). For example:
histogram(Seq(1, 2, 2, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 6, 7), 7)

I opted for a column chart instead of an area chart because I felt area chart can be misleading when there are jumps in the data.
Let me know your thoughts :-)
Compare:
(What it currently is)

(alternative)

I think column chart is the right choice.  But I think you should also have a way to plot already binned data.  Eg., say you are computing the histogram in a distributed fashion from GBs of data.  You should also have a:
def histogram(binnedData:Iterable[(Double,Double,Double)])
with (min,max,count) for each triple, or something like that

Wise, I think I will further add grouped data Iterable[Iterable[Numeric]]
as well as bucketKey->bucketCount pairs: Iterable[(Numeric, Numeric)]

whats the point of grouped data?  the user could just do a .flatten, doesn't save space or time.  Doesn't hurt to add it, though.
I guess in most cases, just a (key,count) is good enough, but I often want to control the bucket sizes explicitly.  Often with power law data I make the buckets get bigger as the values get bigger. (eg., 1 to 10, 10 to 100, 100 to 1000).  Kind of a special case, but pretty common in most big data stuff.

I'm imagining grouped data as a precursor to a key(s): count - ie, you
group data yourself by an unorthodox function (say, such as grouping by
log) and not having to built the countmap.
On Fri, Jan 23, 2015 at 7:47 AM, Imran Rashid<EMAIL_ADDRESS>wrote:

whats the point of grouped data? the user could just do a .flatten,
doesn't save space or time. Doesn't hurt to add it, though.
I guess in most cases, just a (key,count) is good enough, but I often
want to control the bucket sizes explicitly. Often with power law data I
make the buckets get bigger as the values get bigger. (eg., 1 to 10, 10 to
100, 100 to 1000). Kind of a special case, but pretty common in most big
data stuff.
—
Reply to this email directly or view it on GitHub
https://github.com/quantifind/wisp/pull/9#issuecomment-71212659.

--
Austin Gibbons
Research
quantifind.com  |  @austinbg https://twitter.com/austinbg  |  708 601
4894
http://quantifind.com/

I have made several changes:

support key:value pairs and triplets through magnet pattern
more accurately bin data (thanks @hudsonzhao)
default numBins to the square-root of the number of datapoints
Only use square-root number of labels on x-axis

looks great!  would love to some test cases on the various binning, even just as a minimal usage example.  btw, I've heard of a little interest in this over here, before I even did any promotion of it

Thanks for the feedback! I've changed the numeric evidence, add some test binning, and fixed the typo :-)
I'm going to merge this after it builds


Newly created private projects not showing up in private projects tab

Using a local deployment of main, when I create a new private project, it does not appear in the "private projects" tab of the home page. It does however appear in the table shown on the 'Profile' page, as expected. Is anyone else able to recreate this issue locally? Not sure if coincidental, but it seems to have started after I first tried the purge-local-db.py script. That came out around the same time as some other changes to main, so I would be interested to know what happens for others when they create a local private project.

Has this change been included in the current deployment of AmpliconRepository.org? I am still not seeing newly-created private projects in the private projects tab on the deployed website.


Version 1.0.0

[x] Update & fix syntax
[x] Update dependencies
[ ] Make it work

With nodobjc being outdated the whole app breaks. Currently on my fork I've updated nodobjc and also made ffi an actual dependency. I'm currently attempting to fix the set() functionality. tbh I don't know anything about Obj-C, but I've been looking at NSWorkSpace to see if I can find the solution. I've created a script that will set the background but this is the error I receive:
/Users/henrysnopek/projects/osx-background/node_modules/nodobjc/lib/class.js:193
      else throw e;
                 ^
TypeError: error setting argument 5 - writePointer: Buffer instance expected as third argument
    at TypeError (native)
    at Object.writePointer (/Users/henrysnopek/projects/osx-background/node_modules/nodobjc/node_modules/ref/lib/ref.js:740:11)
    at Object.set (/Users/henrysnopek/projects/osx-background/node_modules/nodobjc/node_modules/ref/lib/ref.js:482:13)
    at Object.alloc (/Users/henrysnopek/projects/osx-background/node_modules/nodobjc/node_modules/ref/lib/ref.js:514:13)
    at ForeignFunction.proxy (/Users/henrysnopek/projects/osx-background/node_modules/nodobjc/node_modules/ffi/lib/_foreign_function.js:50:22)
    at unwrapper (/Users/henrysnopek/projects/osx-background/node_modules/nodobjc/lib/core.js:300:31)
    at ID.module.exports.Class.msgSend (/Users/henrysnopek/projects/osx-background/node_modules/nodobjc/lib/class.js:189:34)
    at rtn (/Users/henrysnopek/projects/osx-background/node_modules/nodobjc/lib/core.js:374:47)
    at Object.setBackground [as set] (/Users/henrysnopek/projects/osx-background/index.js:22:12)
    at Object.<anonymous> (/Users/henrysnopek/projects/osx-background/test/test.js:4:12)

Could you lend me some assistance?

With 7d2293c I've "fixed" the error I was receiving above. This however doesn't fix the set() function, as it returns false


Add SIL Open Font License

https://en.wikipedia.org/wiki/SIL_Open_Font_License
Material Design Icons comes under this license
https://github.com/templarian/MaterialDesign

SIL Open Font License v1.1 added in version 2.0.0 as OFL1_1.


Application No App - ShopifyCLI issue

Describe the bug
Shopify CLI issue, version outdated at v8.5.5
Version 8.5.5 outdated you say; but we're only on version 2.16.1. How can this be?!
I'm gald you asked...
Following installation procedure proved by whom ever the wonder people that released version 0.17.1 of hydrogen, an error was released to me informing me that the shopify-cli had an issue running, or configuring or... well it lead me to searching the version. Most, if not all, of these dependencies are oudated.
For Example: My yarn on install was 0.32+git ... they're on 2.16 now...
What am I doing wrong? None of the files are touched other than updating
and that is due to cmd propt errors in attempt to "yarn build" and "yarn dev"
npm isn't having none of it either.
To Reproduce
Install. Run root through Ubuntu.
Follow steps. apt Yarn install. Yarn Dev. Crash.
Well... crash bit extreme.. more like explode.
If you cannot do one of the above, list steps to reproduce the behaviour below:

Run cmd prompt. Enter version server through Ubuntu. I am using Digital Ocean to server host.
Download v17.1.zip - released 2days from today
Unzipped in cmd prompt to/from root.
Follow install instructions. Take note of versions on things.
Yarn dev

Expected behaviour
Running, first warning - cannot find a .git folder. Falling back to manual file hasing (and boy is it slow). After... see screen shot..
Screenshots
Additional context
Add any other context about the problem here. eg.

Hydrogen version: v0.17.1
Node version: v16.15.0
Shopify-CLI version: v8.5.5
Device details: Digital Ocean VM / 2 GB Memory / 2 Intel vCPUs / 25 GB Disk / SFO3 - Ubuntu 20.04 (LTS) x64

Hi. It looks like you are attempting to run the monorepo version of Hydrogen, but instead need to create a new standalone app based on Hydrogen. Please follow the instructions listed on the documentation instead: https://shopify.dev/custom-storefronts/hydrogen/getting-started/create

Ok, lets put a pin that issue for a moment. We'll circle back...
Ran as instructed. Word for word, changed nothing.
As stated, I am currently using a digital ocean. Things loaded up...
At npm ...deps
npm WARN deprecated<EMAIL_ADDRESS>Use the original unforked package instead: postcss-markdown
then: 153 packages are looking for funding
run npm fund for details
Details are funny, but normal.
Ran npm run dev - because at this point I'm done with Yarn till I figure out why linux hates it,
localhost initiated. The localhost failed to connect through brower... plural, tested in Chrome as well.
Simultaneously, I am and have never been able to - while following the steps provided to install hydrogen app, to npm run dev --host in order to expose to public ip. This occurs both in and out of ocean.
As it stand, the only way I've been able to successfully broadcast anything is to localhost, now broken... and by recreating without all of the Shopify/Hydrogen plugins/modules.
(See screenshot)

Likewise, through Mac an error appears as follows:
✓ 6 modules transformed.
[commonjs] Failed to resolve entry for package "http". The package may have incorrect main/module/exports specified in its package.json: Failed to resolve entry for package "http". The package may have incorrect main/module/exports specified in its package.json.
error during build:
Error: Failed to resolve entry for package "http". The package may have incorrect main/module/exports specified in its package.json: Failed to resolve entry for package "http". The package may have incorrect main/module/exports specified in its package.json.
^ I'm lookin at it. Literally lookin at it...
So now I'm at a complete loss. First time I did it, it worked, but no --host, now I can't get local to run either, on Mac or Linux
Windows is great! besides the --host issue, i can get that to appear but only because I'm rebuilding everything from scratch - line for line almost
Anybody experiencing the same issues?

And then back on the prior issue...

This is just command: Yarn
Lets not even think about "yarn build" just yet...
I can't get it today that either. radcustoms is a fresh install following instructions
Only thing changed was I tried to put a new package.json in there because npm told me
It could not find it!
To wit I said, "Gasp. This can not be."
package-lock.json does exist, not the normal. Error received when running above..
See screenshot of output

Also, likewise, another to note on package.json
Why am I unable to simple tell host to expose?
I can build this all perfectly without hydrogen or shopify attached?
In and under scripts I can simple apply:
"host": true,
and boom... my public ip. But here...

@AFHiB That latest error means your package.json file is not valid JSON. You can check this by running:
node package.json

Fix those errors and try it again.

So I went through and screen shotted the process of a fresh install - today, so you know I'm already on that. Following, in order as follows...

So now we've arrived here, which... pardon me for saying this is now a completely new response
How is the app not found if I just installed it?

And why does this ticket keep getting closed before I've had a chance to run people's suggestions and announced that I have found a solution? Is this to acknowledge that someone is monitoring and looking into trying to find a solution for me? I asking because my English isn't very good and my understanding of your ways is lacking. I shall assume that to be the case.
The above is now using nothing more then VS and my own computer to locally host. Nothing is changed. There are no instructions on this one. If somebody could please let me know, as well as the other issue of why I can not --host or get localhost to display, I would greatly appreciate it. Thanks :)
(PS. I am running all three systems. Linux. Mac. And Windows. This is, across the board, a reoccurring issue)

I took the liberty of doing it Live on twitch for you, I don't own any other recording software.
I ran this process 5 times. 4 using "yarn", one using "npm"
https://www.twitch.tv/videos/1475406517
Feel free to jump around and watch what I mean.
Basically, tho... in layman terms, your outdated on your latest version which is why I'm confused because, I should get an error telling me your outdated when you're telling me this is the latest. And if those are the steps I follow, per the site link provided, then why does it not work?
It should work, yes? I mean, never mind the previous errors - deal with that in a minute, or the fact that I'm on a timetable and this is now screwing with my own pay and ability to provide for my fam... why doesn't it work as stated? What am I doing wrong here?


Support Copy Reference action on resources, providers, etc

It should copy FQN of resource/provider/etc not just simple name.

Supported for top-level blocks