enable staticd (frr) by default

Important notices
Before you add a new report, we ask you kindly to acknowledge the following:

[x] I have read the contributing guide lines at https://github.com/opnsense/core/blob/master/CONTRIBUTING.md
[x] I am convinced that my issue is new after having checked both open and closed issues at https://github.com/opnsense/core/issues?q=is%3Aissue

Issue 5778 does not match to my problem.
Used OPNsense version: OPNsense 22.7.4-amd64, FreeBSD 13.1-RELEASE-p2, OpenSSL 1.1.1q 5 Jul 2022 (updated Sep., 18th 2022)
Is your feature request related to a problem? Please describe.
Problem is to create a set up which support ip based load balancing for some poor behaved hardware. Example: Vodafone offers a product named CableMax1000 with an Arris cable modem which neither supports LACP, nor 2,5G interfaces. Routing protocols like IS-IS, OSPF or BGP4 are also not supported. This cable product allows line speeds which exceeds capabilities of a GBit ethernet slightly.
A clear and concise description of what the problem is including your motivation for the request,
Linux supports an easy was do set up such a behaviour:
ip route replace default nexthop via <IP_ADDRESS> dev enp1s0 weight 1 nexthop via <IP_ADDRESS> dev enp2s0 weight 1

Such a configuration works with Linux and Arris cable modem. My idea is to set up a similar behaviour with staticd from OPNsense frr package.
Describe the solution you like
frr offers a mighty routing solution even for static routes by staticd which is included in OPNsense package frr7. It seems to do that job using following config
OPNsense.localdomain# show running-config
Building configuration...

Current configuration:
!
frr version 7.5.1
frr defaults datacenter
hostname OPNsense.localdomain
log syslog notifications
!
ip route <IP_ADDRESS>/0 <IP_ADDRESS> igb1 onlink
ip route <IP_ADDRESS>/0 <IP_ADDRESS> igb0 onlink
!
line vty
!
end
OPNsense.localdomain# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
       F - PBR, f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup

S>* <IP_ADDRESS>/0 [1/0] via <IP_ADDRESS>, igb0 onlink, weight 1, 00:02:08
  *                 via <IP_ADDRESS>, igb1 onlink, weight 1, 00:02:08
C * <IP_ADDRESS>/24 [0/1] is directly connected, igb1, 00:10:42
C>* <IP_ADDRESS>/24 [0/1] is directly connected, igb0, 00:10:42
C>* <IP_ADDRESS>/24 [0/1] is directly connected, em0_vlan4090, 00:10:42

Describe alternatives you considered
For now I found no alternative, because AFAIK FreeBSD does not offer a similar solution like Linux. LAGG with round robin works for IPv4, only. It does not work for dual stack IPv4/IPv6, in this case LAGG/rr does not work for IPv6 connections.
Additional context

According to D26449 (FreeBSD) it is necessary to set net.route.multipath to 1 by sysctl.
Multipath routing on OPNsense in this manner may need some additional investigation.

Neat - I think PR #3880 might help with this!  I'd be happy to work on this, as I need similar functionality for a weird setup with overlay networks.


Fix semver checks

Previously semver checks CI used /dev/tty which seems unavailable in Github Actions.
Changed it to /proc/self/fd/2 which I expect to be available pretty much anywhere.
Changed this CI step so that the job fails on errors. It wouldn't prevent #936 , because this command is part of pipeline, so it won't be affected by set -e, but I think it's a good change anyway.
Fixes: https://github.com/scylladb/scylla-rust-driver/issues/936
Pre-review checklist

[x] I have split my patch into logically separate commits.
[x] All commit messages clearly explain what they change and why.
[ ] I added relevant tests for new features and bug fixes.
[x] All commits compile, pass static checks and pass test.
[x] PR description sums up the changes and reasons why they should be introduced.
[ ] I have provided docstrings for the public items that I want to introduce.
[ ] I have adjusted the documentation in ./docs/source/.
[x] I added appropriate Fixes: annotations to PR description.

Tested that it works now in https://github.com/scylladb/scylla-rust-driver/pull/943

It wouldn't prevent #936 , because this command is part of pipeline, so it won't be affected by set -e, but I think it's a good change anyway.

So, what kind of new errors will we catch now? Why can't we catch errors such as those which manifested in #936 ?

I'm not sure how to best prevent such errors. I guess we could manually check output of steps of the pipeline using PIPESTATUS array and manually error out if second or third step failed. One disadvantage is that it would be more bash code that could fail. Would you like me to do this?

I educated myself on bash error handling a little bit and I think we both make it work and make it readable. I applied what I learnt to your code and I think it should look like this after modifications:
set -e # So that failed commands exit the script
set -o pipefail # So that if a command in a pipe fails, the whole command fails

echo "output<<SEMVER_STDOUT_EOF" >> $GITHUB_OUTPUT
SEMVER_REV_OUTPUT="$(semver-rev rev="$PR_BASE" 2>&1)" && true # "&& true" preserves exit code but cancels effects of set -e
exitcode=$?

# Weird sed strip ANSI colors from output
# If any of the commands below fail, `set -e` and `set -o pipefail` should exit the script
echo "${SEMVER_REV_OUTPUT}" | tee /proc/self/fd/2 | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" >> $GITHUB_OUTPUT
echo "Semver checks exitcode: " $exitcode
echo "SEMVER_STDOUT_EOF" >> $GITHUB_OUTPUT
echo "exitcode=$exitcode" >> $GITHUB_OUTPUT

Note that I didn't test this code, this is just to demonstrate the ideas.

SEMVER_REV_OUTPUT="$(semver-rev rev="$PR_BASE" 2>&1)" && true # "&& true" preserves exit code but cancels effects of set -e

Are you sure you meant && true, not || true ? IIUC, what we want to achieve here is that even if semver-rev command fails, set -e won't trigger an exit at this point.

SEMVER_REV_OUTPUT="$(semver-rev rev="$PR_BASE" 2>&1)" && true # "&& true" preserves exit code but cancels effects of set -e

Are you sure you meant && true, not || true ? IIUC, what we want to achieve here is that even if semver-rev command fails, set -e won't trigger an exit at this point.

I tried it and && seems correct. There is a slight error in @piodul's code - " shouldn't be there, so the line should look like this:
SEMVER_REV_OUTPUT=$(semver-rev rev="$PR_BASE" 2>&1) && true # "&& true" preserves exit code but cancels effects of set -e

If we used ||, it would not preserve exit code.
karolbaryla@localhost:~$ set -e
karolbaryla@localhost:~$ set_status() { return "$1"; }
karolbaryla@localhost:~$ $(set_status 2) && true
karolbaryla@localhost:~$ echo $?
2

karolbaryla@localhost:~$ set -e
karolbaryla@localhost:~$ set_status() { return "$1"; }
karolbaryla@localhost:~$ $(set_status 2) || true
karolbaryla@localhost:~$ echo $?
0

SEMVER_REV_OUTPUT="$(semver-rev rev="$PR_BASE" 2>&1)" && true # "&& true" preserves exit code but cancels effects of set -e

Are you sure you meant && true, not || true ? IIUC, what we want to achieve here is that even if semver-rev command fails, set -e won't trigger an exit at this point.

Yes, I meant && true. https://stackoverflow.com/questions/2870992/automatic-exit-from-bash-shell-script-on-error/2871034#2871034

Updated the PR according to @piodul 's suggestion

@Lorak-mmk although this is already merged, please update the PR description to reflect reality (the "It wouldn't prevent" part looks outdated)


Bug: empty or only white space strings for usernames and passwords are allowed by application.

PR #53 fixed that problem.


Increase the length of charmaps.

8 is not enough to work with. The same will probably be said for 16, but this will do for now.

Still wanted?


Enable lock on output dir for BSP server too

@alexarchambault is this ready to review/merge?

@lihaoyi I guess it can be reviewed / merged. I'd like to add an integration test to ensure Mill commands and BSP requests can be interleaved. It'd be mainly useful for non-regression, to ensure upcoming changes don't break things. So it can always be added later.

Sounds good, I went ahead and merged it for now

Just in case, I'd manually check if BSP import in IntelliJ works fine. I didn't with the changes here.

Just did, seems to work!


fix uploading artifacts for paramertrized jobs

Checklist

[ ] documentation is added or updated
[ ] tests are added or updated

concur urgent

Merged to the master and 3.3 branches. Thank you.


Run e2e tests using Go 1.20 for now

With 1.21 this seems to fail with some quoting issue. Trying 1.20 to see if that works for now.
platform is 'linux'/'amd64',linux/arm64

https://github.com/ko-build/ko/actions/runs/6146667632/job/16676493935?pr=1139#step:4:551

Bah I opened this on the wrong repo! ☕


Update sample inventory files 7.8 to have centralized MDS as well

Description
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
Fixes # (issue)
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration
Checklist:

[ ] Any variable/code changes have been validated to be backwards compatible (doesn't break upgrade)
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] If required, I have ensured the changes can be discovered by cp-ansible discovery codebase
[ ] My code follows the style guidelines of this project
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] Any dependent changes have been merged and published in downstream modules

inventory looks good, have you tried it out to verify that it works?

inventory looks good, have you tried it out to verify that it works?

This sample inventory file is based on https://github.com/confluentinc/cp-ansible/blob/7.8.x/molecule/mini-setup-ext-mds-mtls/molecule.yml from molecule tests


EDA Q9-12: Jim

Jim to perform EDA
Considering:

Q9: histogram
Q10: histogram
Q11: bar graph
Q12: bar graph

@shusterc
@chaomander2018
@gilbertlei
Located in our new private repo:
https://github.ubc.ca/MDS-2018-19/Capstone_Project_Survey
I did a basic draft of four EDA plots (Q9-12) - just manipulated the data a bit to suite the draft. I haven't added comments, yet.  I think we may want to do a few plots with multiple variables to note associations, etc. These first four are only distributions.


BUGFIX: Add NO_BUILD default value

@alirezanet Can you please merge this PR as it fixes an error when NO_BUILD flag is not provided.


[6.5.x] RHBRMS-2736: [GSS] (6.4.z) Unable to download JAR by Users without admin role

See https://issues.jboss.org/browse/RHBRMS-2736
This is the corollary of https://github.com/droolsjbpm/guvnor/pull/407 for 6.5.x

This PR is part of an ensemble:-

https://github.com/droolsjbpm/guvnor/pull/408
https://github.com/droolsjbpm/kie-wb-distributions/pull/448


Pydantic TzInfo(UTC) != datetime.UTC

Initial Checks

[X] I confirm that I'm using Pydantic V2

Description
A Pydantic model with a datetime.datetime attribute and initialized with an UTC timestamp fails to correctly compare its .tzinfo attribute to datetime.UTC for equality.
Example Code
import datetime

from pydantic import BaseModel

class Event(BaseModel):
    dt: datetime.datetime = None

event = Event(dt="2024-01-01T13:56:57.115Z")
print("This should be True:", event.dt.tzinfo == datetime.UTC)
# prints: This should be True: False

Python, Pydantic & OS Version
pydantic version: 2.6.0
        pydantic-core version: 2.16.1
          pydantic-core build: profile=release pgo=true
                 install path: /Users/guido/devel/alliander/grid-switch-state-service/venv/lib/python3.11/site-packages/pydantic
               python version: 3.11.7 (main, Dec  9 2023, 06:06:18) [Clang 14.0.3 (clang-14<IP_ADDRESS>.1)]
                     platform: macOS-13.6.3-arm64-arm-64bit
             related packages: typing_extensions-4.8.0 mypy-1.7.1 pydantic-settings-2.1.0 fastapi-0.103.2
                       commit: unknown

@gkoller,
Thanks for reporting this. We use the TzInfo object from pydantic_core, which theoretically has performance benefits, though said benefits have been questioned, see: https://github.com/pydantic/pydantic/issues/7897.
There have also been reported issues with pandas compatibility, see https://github.com/pydantic/pydantic/issues/8195.
I'll chat with the team about these inquiries and get back to you tomorrow morning re next steps.

Note that Python’s own standard library has many different UTC zone objects: for example, datetime.UTC, zoneinfo.ZoneInfo("UCT"), zoneinfo.ZoneInfo("UTC"), zoneinfo.ZoneInfo("Universal"), zoneinfo.ZoneInfo("Zulu"), zoneinfo.ZoneInfo("Etc/UCT"), zoneinfo.ZoneInfo("Etc/UTC"), zoneinfo.ZoneInfo("Etc/Universal"), zoneinfo.ZoneInfo("Etc/Zulu") all compare as unequal. So equality comparison with datetime.UTC is not a reliable way to detect UTC.

@andersk Thank you for pointing that out. Never knew that, never having bothered to use the zoneinfo module that is new as of Python 3.9.
Did have to check your claim though ;-)
import datetime
import itertools
import zoneinfo

timezones: list[datetime.tzinfo] = [
    datetime.UTC,
    zoneinfo.ZoneInfo("UCT"),
    zoneinfo.ZoneInfo("UTC"),
    zoneinfo.ZoneInfo("Universal"),
    zoneinfo.ZoneInfo("Zulu"),
    zoneinfo.ZoneInfo("Etc/UCT"),
    zoneinfo.ZoneInfo("Etc/UTC"),
    zoneinfo.ZoneInfo("Etc/Universal"),
    zoneinfo.ZoneInfo("Etc/Zulu"),
]
tz_pairs = itertools.combinations(timezones, 2)
for tz1, tz2 in tz_pairs:
    print(f"{tz1} == {tz2} = {tz1==tz2}")

And indeed all compare as unequal:
UTC == UCT = False
UTC == UTC = False
UTC == Universal = False
UTC == Zulu = False
UTC == Etc/UCT = False
UTC == Etc/UTC = False
UTC == Etc/Universal = False
UTC == Etc/Zulu = False
UCT == UTC = False
UCT == Universal = False
UCT == Zulu = False
UCT == Etc/UCT = False
UCT == Etc/UTC = False
UCT == Etc/Universal = False
UCT == Etc/Zulu = False
UTC == Universal = False
UTC == Zulu = False
UTC == Etc/UCT = False
UTC == Etc/UTC = False
UTC == Etc/Universal = False
UTC == Etc/Zulu = False
Universal == Zulu = False
Universal == Etc/UCT = False
Universal == Etc/UTC = False
Universal == Etc/Universal = False
Universal == Etc/Zulu = False
Zulu == Etc/UCT = False
Zulu == Etc/UTC = False
Zulu == Etc/Universal = False
Zulu == Etc/Zulu = False
Etc/UCT == Etc/UTC = False
Etc/UCT == Etc/Universal = False
Etc/UCT == Etc/Zulu = False
Etc/UTC == Etc/Universal = False
Etc/UTC == Etc/Zulu = False
Etc/Universal == Etc/Zulu = False

And this means @sydney-runkle that what I reported as a bug, is not a bug after all.
Though It is a change in behaviour from Pydantic V1 to V2 and probably should be documented as such somewhere in the Migration Guide.
But once again @andersk remark stands:

So equality comparison with datetime.UTC is not a reliable way to detect UTC.

And I agree now. Need to brush up my knowledge Python datetime handling. Thank you all, I learned something new today.

don't we just need to fix TzInfo::__richcmp__?

Or add __eq__? cc @davidhewitt

We could definitely implement comparisons for pydantic_core.TzInfo with fixed-offset datetime.timezone, which I think would fix  the UTC case.
I think for more advanced timezones which aren't fixed offset the ordering is not well defined, so I think we could only make this work for datetime.timeonze.

sounds good, PR welcome to add that.


meson: drop dtc subproject

This drops the build of dtc. This was intended to build the dtc binary locally if not already present, but this causes issues for packaging of the util.
Fixes #61

I'm very much not an expert at meson. But isn't it required to be declared as a subproject to be used?

See https://mesonbuild.com/Reference-manual_functions.html#dependency_fallback


IllegalRefCountException in FullHttp[Request|Response].hashCode()

Motivation:
FullHttp[Request|Response].hashCode() uses a releasable object and in vulnerable to a IllegalRefCountException if that object has been released.
Modifications:

Ensure the released object is not used.

Result:
No more IllegalRefCountException.

@blucas @normanmaurer - FYI

@Scottmitch can you check if the test-failures are related ?

@normanmaurer - Unit test fixed....copy/paste error. PTAL.

@Scottmitch just two nits... Please address these and cherry-pick once the CI passed this PR.

@normanmaurer - Thanks. Will cherry-pick after build completes on CI.

Cherry-picked 4.1 (0d71744) master (80ce2bf)


Adding new Burp extension: BurpBounty

There are few examples here: https://www.youtube.com/channel/UCSq4R2o9_nGIMHWZ4H98GkQ/videos
Thanks for your great work!

@rykkard
Thank you for your PR! Merged :D

@rykkard

And I added it to the footer. so please let me know if you need to change the link to Twitter or a personal web page.
Cheers 😊


auto-formatter

Fixes #317. You can see this applied to ecma262 at https://github.com/tc39/ecma262/pull/2564.
This probably doesn't really need a comprehensive review. I'd just look at test/formatter.js to confirm that the things it's enforcing look correct.

Depends on https://github.com/tc39/ecmarkdown/pull/89 getting landed/released, hence the CI failure.


Spell check of flutter docs

No code changes, just comments: I spell-checked all the comments in the repo.

Hmm. I much prefer all of the hyphenated ones, but maybe that just makes me uncommon. The non-hyphenated versions all look like made up words to me.
I reverted all the hyphenations I added, and all other hyphenations of these words in all the comments, so that we're at least consistent.
I kept plain text because it feels more descriptive and less a term of art (and it's nearly as common).


Add advanced custom model tutorial

Issue #, if available:
Description of changes:

Add advanced custom model tutorial showcasing the ability to bypass preprocessing of features.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Job PR-1741-2 is done.
Docs are uploaded to http://autogluon-staging.s3-website-us-west-2.amazonaws.com/PR-1741/2/index.html


Memories not work

Description
Use Learning function update file with two line txt msg, memories save success. Then use normal chat self.agent.memories.context_agent not found anything.
Steps to Reproduce the Bug

go to Learning page
upload txt file  like: "Piter is a engineer"
go to chat page, not select smart chat
with message "What is Piter's occupation"
click send message

Expected Behavior
when process chat task , format_prompt with learning info.
Actual Behavior
I print some log， like this， show Memory collection count : 0, collection_list []
 def context_agent(self, query: str, top_results_num: int) -> List[str]:
        print(f"Memory query: {query}, limit: {top_results_num}")
        if not self.chroma_client:
            self.chroma_client = self.initialize_chroma_client()
            self.collection = self.get_or_create_collection()
        count = self.collection.count()
        collection_list = self.collection.peek()
        print(f"Memory collection count: {count}")
        print(f"Memory collection list: {collection_list}")

Additional Context / Screenshots
No response
Operating System

[ ] Microsoft Windows
[X] Apple MacOS
[ ] Linux
[ ] Android
[ ] iOS
[ ] Other

Python Version

[ ] Python <= 3.9
[X] Python 3.10
[ ] Python 3.11

Environment Type - Connection

[X] Local
[ ] Remote

Environment Type - Container

[X] Using Docker
[ ] Not Using Docker

Acknowledgements

[X] My issue title is concise, descriptive, and in title casing.
[X] I have searched the existing issues to make sure this bug has not been reported yet.
[X] I am using the latest version of AGiXT.
[X] I have provided enough information for the maintainers to reproduce and diagnose the issue.

agixt-agixt-1  | /agixt/agixt/AGiXT.py:209: RuntimeWarning: coroutine 'Memories.store_result' was never awaited
agixt-agixt-1  |   pass

seems the code doesn't wait for the async

Resolved in #552


Remove Widget on input connection

This is less of an issue more of a question:
I tried for a while to find a way to "bind" inputs to a widget in order to emulate the behaviour in Blender's node editor. In Blender it behaves as follows:

each Widget has a corresponding input
if you connect something to that input, the widget is hidden and the set value ignored
if you disconnect that input the widget is shown and the previously set value restored

I suspected the way to do this is to remove the widget when the onConnectionsChange callback fires, however I did not find a removeWidget method that I could have used to remove that widget. Any pointers are welcome.

I don't understand your exact concern, widgets already only render for disconnected inputs.

Those are screenshots from the demo app.
I have the patch for the opposite behavior (allow rendering some widget UI even if an input is connected), but I'm waiting for #85 to be merged first.


Response to timeRequest (C_INTERNAL->I_TIME) not handled anymore?

Hi,
I have a few nodes requesting time from MyController, this has worked great in the past but now when running latest SNAPSHOT. I have no idea how far back this stopped working to be honest. Now only see node requesting time but no reponse in the logs:

14229:2017-01-12 13:53:16,459 DEBUG [Thread-508] [org.mycontroller.standalone.gateway.serialport.SerialDataListenerjSerialComm:64] Received a message:[0;255;3;0;9;TSF:MSG:READ,35-35-0,s=255,c=3,t=1,pt=0,l=0,sg=0:]
14230-2017-01-12 13:53:16,462 DEBUG [Thread-508] [org.mycontroller.standalone.gateway.serialport.SerialDataListenerjSerialComm:64] Received a message:[35;255;3;0;1;]

Is this a known issue?

@Redferne this issue was fixed recently. You can test this latest SNAPSHOT version. Thank you!


Wrong name of function in date.endofweek in text

🛑 IMPORTANT: You can get your feedback addressed faster if you use the comment section for the article in which you encountered a problem.
Link to article:
https://docs.microsoft.com/en-us/powerquery-m/Date-EndOfWeek
Problem:
The syntax refers to the function
Date.StartOfWeek
should the
Date.EndOfWeek
/Erik Svensen

@Minewiskan @mikekinsman Can you take a look at this issue?


Loot popup not working in flash

I cant get the tiny loot popup message to work in flash, If i do loot@ it shows what loot has been gained during the hunt, and if I use the premade test message you put in for the necro with BoH it shows up, but if I put a message from my server log in to the test message I get a yellow triangle phrase error. It seems to be the way timestamps is formated cause they go "hour:minute: loot" if I remove the : after minute the messages starts working. But I cant figure out how to make tibialyzer accept the extra : .
Thanks for an amazing program I hope this can be fixed would love to use this alot more!

Should be fixed with commits ba975ab091cb4f85fb31b2100fcad9fc11e8d849 and 631a6f8285f794b8317625a404b27c905422e89d. I updated the latest release, which you can find here.

Thanks, Great support!


Import Writable as a type

Import Writable as a type because it is a type-only import. If user has preserveValueImports and isolatedModules both enabled in their typescript configuration it will provide an error unless imported as a type.

Not sure I understand why TypeScript can't infer it's a type

@joshnuss TypeScript knows that Writable is a type, but other bundlers (such as Svelte, Babel, or esbuild) only know what might be a type. Usually, these tools can strip out unused variables. In this example, all bundlers can safely remove the Writable and cookie variables from imports, as they aren't used in generated JavaScript.
import { Writable, writable } from "svelte/stores"
import { cookie } from "my-cookie-library"

function createAWritableThing() {
  return writable(23)
}

outputs
import { writable } from "svelte/stores"

function createAWritableThing() {
  return writable(23)
}

However, if preserveValueImports is enabled, all values (things that aren't types or interfaces) are preserved in the generated JavaScript files. This is especially useful in templating libraries such as Vue or Svelte where imports are used in the template, not the JavaScript itself.
If we wrote the same example above with preserveValueImports set to true, TypeScript would know that cookie is a value and keep it in our generated code, while at the same time removing Writable, because it can look in the original file and make sure it's a type or interface, not a variable.
import { Writable, writable } from "svelte/stores"
import { cookie } from "my-cookie-library"

function createAWritableThing() {
  return writable(23)
}

outputs
import { writable } from "svelte/stores"
import { cookie } from "my-cookie-library"

function createAWritableThing() {
  return writable(23)
}

TypeScript also has a flag called isolatedModules. When this is enabled, the TypeScript compiler is disallowed from looking into other modules to get values and check things. Thus, it doesn't know whether Writable and cookie are values or types, so it would include both at runtime. For bundlers like esbuild or Svelte, this property is often required because these compilers can only handle one file at a time and don't have the same freedom as TypeScript.
However, there's now a problem. Because Svelte, Vue, and esbuild can only handle one file at a time, they have no idea whether Writable or cookie are types or values, so using preserveValueImports with them would run into a huge issue. Namely, plugging our example into esbuild with preserveValueImports and isolatedModules set to true produces this output:
import { writable, Writable } from "svelte/stores"
import { cookie } from "my-cookie-library"

function createAWritableThing() {
  return writable(23)
}

Do you see the problem? Because we enabled preserveValueImports (presumably, because we use eval, Vue, or Svelte) and isolatedModules, esbuild has decided to import Writable even though we don't actually want it. However, JavaScript imports are strict, and Writable won't just be undefined. It'll throw an error before our code even gets a chance to run.
TypeScript's solution is simple: just add type before any type imports you use. Then, all bundlers know that they're types and everything will work perfectly fine. However, this solution doesn't just depend on the code you write. It means that any .ts or .d.ts files written by any libraries you use (including svelte-local-storage-store) must also use import type. We could fix this code by simply adding type to Writable.
import { writable, type Writable } from "svelte/stores"
import { cookie } from "my-cookie-library"

function createAWritableThing() {
  return writable(23)
}

Done! Now our code won't crash at runtime and we can keep the omnipotent being that is the TypeScript compiler happy.

@zsakowitz Thanks for the explanation. Even I got something from that.

Thanks @amserra & @zsakowitz!


fixed unsupported function loadedOnRequest() in class Css

fixed unsupported function loadedOnRequest() in class Css

That function is not an unsupported one. Why did you think like that?
Also if you pay attention, when you remove this function, you will see that the css file is loaded twice. You can check it from the network tab on the browser console.


Memoize the distances between points

On my tests, the function get_distance takes 95% of the time because of all the trigonometric functions that are used, so we simply memoize them. On my simplistic test data, this reduces the running time from 1100s to 11s. Hopefully this strategy will also work well on the actual data.
Also add a Pipenv file to install automatically the dependencies, and a script to generate test data to test the program.

Down to 20s for the tri-location computation on the sigplan data: awesome!
Thanks a lot!


Does this module affect super?

Do you have any idea what happens with super in prototype methods that get wrapped? Does super work as you'd want it to?
e.g.:
let wrap = require('async-class').wrap;

class SuperClass {
  *myMethod() {
    return yield doSomething();
  }
}

class SubClass extends SuperClass {
  *myMethod() {
    var result = yield super.myMethod();
    yield doSomethingElse();
    return result;
  }
}

wrap(SuperClass);
wrap(SubClass);

An update: I checked the example and it seems to work fine.
var x = new SubClass();
x.myMethod();

...calls SuperClass.prototype.myMethod() as well as SubClass.prototype.myMethod() so super appears to work fine.
So am closing this issue.


build: Update to latest go-mods

Signed-off-by: Leonard Goodell<EMAIL_ADDRESS>

If your build fails  due to your commit message not passing the build checks, please review the guidelines here: https://github.com/edgexfoundry/edgex-go/blob/main/.github/Contributing.md
PR Checklist
Please check if your PR fulfills the following requirements:

[x] I am not introducing a breaking change (if you are, flag in conventional commit message with BREAKING CHANGE: describing the break)
[x] I am not introducing a new dependency (add notes below if you are)
[ ] I have added unit tests for the new feature or bug fix (if not, why?) N/A
[ ] I have fully tested (add details below) this the new feature or bug fix (if not, why?)  N/A
[ ] I have opened a PR for the related docs change (if not, why?)  N/A

Testing Instructions
N/A
New Dependency Instructions (If applicable)
N/A

Codecov Report

Merging #3790 (1b606ef) into main (c5f5ac1) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #3790   +/-   ##
=======================================
  Coverage   45.77%   45.77%
=======================================
  Files         112      112
  Lines        9640     9640
=======================================
  Hits         4413     4413
  Misses       4844     4844
  Partials      383      383

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 c5f5ac1...1b606ef. Read the comment docs.


build: linux-ppc64le builders need swap + workdir on tmpfs

The linux/ppc64le builders on OSUOSL are very slow. It looks like their disk is slow, and /tmp (where the builders build by default) is on a disk of some sort.
We should setup a /workdir tmpfs like we do for linux/arm and configure the builders to build there. We'd also need swap enabled, since the amount of RAM on the VMs is marginally sufficient to keep the workdir in memory.

This was done with the recent refresh of the packet and linaro builders in:
https://go-review.googlesource.com/c/40690/
and
https://go-review.googlesource.com/c/40690/
They use a tmpfs.


Add more functionality for SCTPTransportStats

This is a rebased version of #205

@wawesomeNOGUI Unfortunately, the tests are failing :( Do you want to have a look?

@wawesomeNOGUI Unfortunately, the tests are failing :( Do you want to have a look?

Tests should be good now 👍

@at-wat

Correct co-author tag is Co-authored-by:

Thanks, I fixed the commit message

Thanks @davidzhao


fix issue that values are not applied while running upgrade cmd

closes #5792
It should not define additional values as ValueOptions will consolidate from various value sources to rawValues.
This PR also fixes an UT assert bug.

[x] this PR contains unit tests

@rokii Thanks for this PR! 😄 🎉
I just tried this and it worked when I used --set. But weirdly it didn't work for me when I just used --values.
On checking, looks like we need to change this code too - https://github.com/helm/helm/blob/871b092f32ea5920dbec881f75e3f9caa3db2748/pkg/action/upgrade.go#L270
It should check if the values in the upgrade command are empty. But it's checking only the --set but like you mentioned, there are other sources from where values come from, so it should use u.rawValues and not u.Values. I think we need to write test for that too so that later it doesn't get missed 😄

@karuppiah7890 thx for pointing out that. And I also add more test cases including other two source values.

thanks @rokii. Taking a closer look at this today.

I had the same issue and used your fork for this PR to build from source and it worked for me, thank you !


Misc updates

coverage: 64.291% (+6.9%) from 57.374%
when pulling 55fcf1e9c193c67ca06f93663edd57e3c0662732 on misc-updates
into 4682966e1ea0759ecf3c425e9b614da476ba564f on main.


Big LSC lol

I don't want GD or Sampsa to be able to fullfil a max size LSC so I made it bigger

as a real argument that I obviously worked on before making this.. this make LSC more relevant and competitive against the gtpp thingy I don't remember the name for mid tier

GT++ recipes sucks. Radox cell need a propper rework

this one is not gtpp just saying..

GT++ PSS is not great vs LSC since buffs is what Dream is saying. It needs more love too (though I don't think anyone wants to build a brown looking poop box).

the brown looking poop box actually store more energy every tier except the last one because it doesn't have capacitor for it lol

Actually no, PSS EV only stores a bit more EU than LSC EV, then after that LSC capacitors just stomp PSS every tier, since PSS scales at 4x vs. LSC x10. I am not sure about the max height of PSS you can build though, probably similar to LSC (which in that case it's hardly competitive at all).

? has something changed ? I remember doing the PSS in <IP_ADDRESS> because boubou told me it was sadly outstanding LSC by a lot

this one is not gtpp just saying..

Ik but that remember me gt++ need a rework this half finished casing bs need to be finished or changed to a gt casing

looks like now there is a goal bigger than the stargate to reach lmao

looks like now there is a goal bigger than the stargate to reach lmao

Obviously that just means we need to nerf stargate more :trollface:

@GTNH-Colen nerf Stargate NOW!


Chown NFS again in mounts

Config files copied onto the NFS were ending up owned by root. This makes everything uniformly owned by 101 as is expected right now

Opened https://github.com/galaxyproject/galaxy-helm/issues/320 to track further improvements


sort bundles to the top?

is there a possibility to group all bundles at the top instead of interspersing them with emails?

it looks quite messy and loses the point of having the bundles in the first place

during the Inbox times there even was an extension highlighting the whole bundle line in pale yellow


Lots o' Issues

So, current issues. Can't Update User(had to use Postman to fix the POST request), Shortened URLs don't work, Hitting Enter in URL textbox relocates you to Home Page, No way to Delete Images.

Can't Update User:
Login > In Update Your Profile type in new user/pass > hit enter > Error Messeage appears.
Shortened URLs
Submit URL to be shortened, try to use shortened URL > 404 error appears(example: https://cdn.ittim.xyz/s/nnxA)
Hitting Enter in URL textbox relocates you to Home Page
Click URL shortener textbox > click enter > get yeeted to Home Page
No Way to Delete Images
Go to Images Tab > Have a midlife crisis at 20.

After trying to recreate all of these here is my response:

updating user: yep, this is a problem, it is due to the current user being "null". This is now fixed, an update should be coming out soon with some more updates.
shortening urls: This does not happen to me, I did exactly what you did but i didnt get a 404 error.
Shortening urls pressing enter: Pressing enter is not supposed to be done as it was never meant to be actual functionality. This will not be added.
Deleting Imgs: This is on purpose, a later update will be coming out with this!


Operator yaml example to deploy localpv provisioner only

This feature has been requested in the community.
Some of the OpenEBS users use OpenEBS orchestration, NDM and localpv provisioner only and would like to limit the number of components installed.
We need a limited version of the operator openebs-operator-1.1.0.yaml file with bare-minimum localpv requirements that deploys only the below four components:
openebs/provisioner-localpv
openebs/node-disk-manager
openebs/node-disk-operator
openebs/linux-utils
openebs/openebs-tools

For the node-disk-manager

Sample YAMLs to just install the components required for Local PV are available here:

https://openebs.github.io/charts/openebs-operator-lite.yaml
https://openebs.github.io/charts/openebs-lite-sc.yam

If using helm, an example values.yaml is:

https://openebs.github.io/charts/openebs-lite-helm-values.yaml

does this mean - our upgrade compatibility matrix grows, i.e., whether user used lite or complete yaml?
and what if user wants to make the complete install later (or) vice versa? can he follow different paths for each one?
And, will we support various other lite versions as well?
(or) would it be possible to document to scale down to zero if user doesn't need any particular engines?

yes @vishnuitta -- as part of upgrades - we will have to maintain and test this lite version of yamls.
the yamls and helm values are designed in such a way that they can be converted to full install later. since these are local PVs, the upgrades are only associated with control plane upgrades which are managed by users.


Blank vhost for Rabbitmq Scaler apiHost is erroring out when making api calls

Blank vhost for Rabbitmq Scaler apiHost is erroring out when making api calls to the queue.
Expected Behavior
With no vhost specified the api call to RabbitMQ should look like this:
http://guest:guest@rabbitmq:15672/api/queues/%2F/queuename
Actual Behavior
With no vhost specified the api call to RabbitMQ looks like this:
http://guest:guest@rabbitmq:15672/api/queues/api//queuename
Debug log from Controller:
{"level":"debug","ts":"2020-04-29T00:15:39.676Z","logger":"scalehandler","msg":"Error getting scale decision","ScaledObject.Namespace":"cust0-herald-test","ScaledObject.Name":"celery-scaledobject","ScaledObject.ScaleType":"deployment","Error":"error inspecting rabbitMQ: error requesting rabbitMQ API status: 404 Not Found, response: {"error":"Object Not Found","reason":"Not Found"}, from: http://guest:guest@rabbitmq.cust0-herald-test.svc.cluster.local:15672/api/queues/api//celery"}
Steps to Reproduce the Problem

Don't specify a vhost in the apiHost setting
Deploy scaledobject without vhost specified

Specifications

KEDA Version: v1.4.1
Kubernetes Version: v1.14.8
Scaler(s): RabbitMQ

So you're saying that the fix for https://github.com/kedacore/keda/issues/768 is not working out?

@tbickford @holyketzer seems like RabitMQ scaler needs more love 😄

@mpduarte which value you provide in apiHost ?

http://guest:guest@rabbitmq:15672/
http://guest:guest@rabbitmq:15672//
http://guest:guest@rabbitmq:15672/%2F
They all should work.

One case I'm not sure is http://guest:guest@rabbitmq:15672, let me check

Yes case without trailing slash wasn't covered. @mpduarte you can just add trailing slash to your apiHost

I had a trailing slash, the issue is I had is I specified /api/ at the end, for some reason I thought it was required, once I removed it, everything started working great. appreciate the quick responses!


getQuery returns incorrect values

I'm currently managing most of my state inside of query params in the URL.
Whenever state change take place, I call
this.replaceWith(this.getPathname(), this.getParams(), newQuery);

Whenever navigation takes place, I call
this.transitionTo(childRoutePath, this.getParams(), this.getQuery());

If I change the pagination state (i.e., current page) on a given page, navigate to another page, and then return to the original page, the current page will ALWAYS be corrupted.  If I don't change the pagination state, and repeat the rest of the process, the current page still becomes corrupted.  The URL will reflect the correct state before any navigation takes place.
As soon as
this.transitionTo(childRoutePath, this.getParams(), this.getQuery());

gets called, the URL becomes corrupted.
I'm using version 0.13 of react-router.  I've had issues getting the most recent version working, but I'll try again.
Any help would be appreciated, but I'm pretty sure this is a bug.

I read through this but I'm having trouble following what you're saying. What do you mean by "the page is corrupted"? In any case, you'll probably have better luck getting help if you use 1.0.0-rc1.

I mean that, before I navigate to another path, the URL in the browser reflects that I'm looking at a given page of the current table.  That is,
...&type1Pag[currentPage]=1&...

When I navigate to another path, the query param becomes:
...&type1Pag[currentPage]=3&...

When I return to the original path (NOT by navigating "back" in the browser), the value stays in the query param:
...&type1Pag[currentPage]=3&...

This means that getQuery/getCurrencyQuery aren't actually retrieving the current query params represented in the URL - they're stale.

If you don't use the browser's back button, how do you "navigate" back?

The root route has several tabs that allow you to navigate to other routes.  Each route generates new query params, if they don't exist in the URL already.  These params hold most of the state of the current page.
When I navigate to a different page, I don't lose the query params that were previously set.  Navigating back to pages I had visited previously, the query params provide persistent state.

It's still not clear what you're saying. In your example in https://github.com/rackt/react-router/issues/2180#issuecomment-146380262, what do you expect to happen, and what do you actually observe?

please provide more details on this issue and we will reopen

I expect
...&type1Pag[currentPage]=1&...

To stay the same value the entire time.  Before navigating to another tab, I can check the value of getQuery().  It will tell me that type1Pag.currentPage = 3, even though the URL says it's 1.

Can we do anything about this though? If it's an actual v0.13.x bug with handling queries, I don't see a way for us to actually fix this anyway.

you are right @taion.
@toddwildey all I can suggest is to upgrade to React Router 1.0 then


is  mmdetection/tools/dataset_converters/pascal_voc.py support segmentation task?

mmdetection/tools/dataset_converters/pascal_voc.py
i do not I didn't find the code for segmentation in this file.thanks

Hi, This script does not support handling mask at this time.


unable to get local issuer certificate

threats-server  | Public API serving at: http://localhost:8001/
threats-server  | Internal API serving at: http://localhost:8002/
threats-server  | Game server API (websocket) serving at: http://localhost:8000/
But nothing comes up in browser?!

Hi @deepakkumpala
The client should be accessible at port 8080, try opening up http://localhost:8080/ and see if it works.


feat: move from Object.keys(KnownChainIds) to safe knownChainIds array

Description
... i.e without ChainIds that are currently flagged off. This is in response to the following from @MbMaria https://github.com/shapeshift/web/pull/6667#issuecomment-2058170776:

This is fixed on the trade from asset drop down but the icon still appears in the trade to menu

And indeed, with the current assumptions that KnownChainIds is static, and the many many consumptions of it, it's not sane to expect tackling all the feature-flags detection.
By having a static knownChainIds array that checks whether the feature-flag is enabled/disabled for it at module evaluation time, we ensure all consumoors don't run the chance of exposing ChainIds which
are currently flagged off.
For completeness, added all chains that we currently have flags for.
Pull Request Type

[ ] :bug: Bug fix (Non-breaking Change: Fixes an issue)
[ ] :hammer_and_wrench: Chore (Non-breaking Change: Doc updates, pkg upgrades, typos, etc..)
[x] :nail_care: New Feature (Breaking/Non-breaking Change)

Issue (if applicable)

relates to the closed https://github.com/shapeshift/web/issues/6664

Risk

High Risk PRs Require 2 approvals

What protocols, transaction types or contract interactions might be affected by this PR?

Low - ensure all chains are looking the sain as in develop currently without turning any flag on or off
Testing

See risks

Engineering

^

Operations

^

Screenshots (if applicable)
Swapper buy and sell chain selection - this diff vs. develop (right)

https://github.com/shapeshift/web/assets/17035424/d5c94f1d-4ac8-416f-a067-f31f23d05ad4

still seeing fox icon in trade to drop down list


Allow courses to toggle recommending appointments

a) 61C does not use appointments for regular OH, so this is not a desired message

b) Fixed


Handle no appmap.yml file

Fixes #27
This error occurred for most of the Upworkers:
Adding .appmap to .gitignore
Using @appland/appmap release @appland/appmap-v3.99.0 for linux-x64
Installing AppMap tools from https://github.com/getappmap/appmap-js/releases/download/%40appland/appmap-v3.99.0/appmap-linux-x64
AppMap tools are installed at /usr/local/bin/appmap
Error: ENOENT: no such file or directory, open 'appmap.yml'

For an example, see this job.
This was caused by a missing appmap.yml file in their project directory. This fix tries to read the appmap.yml file and if it fails then it falls back to using tmp/appmap as the appmap_dir.

Thanks Adam. The thing that still confuses me is, if the installer has run successfully, why isn’t there an appmap.yml?


LAN connection

How about lan connection via lan module w5500 sir? This is also optional for mcu stable connectivity. Thanks more power po

Job well done po sir. More power po. thanks


Fix inventory sync when canceling InventoryClickEvent, closes #181

So okey, this throws a Exception if you click in the botten inventory, but as InventoryView states, it gets the Item by its raw id. But glowstone++ Overrides this and calls checkSlot which throws the error.

This looks a little hacked together - Maybe @deathcap can take a look at this at some point

@gdude2002 this is very hacked, but CraftBukkit was doing it to, it's a problem on the client, not accepting the transaction doesn't reset the slot and the courser of the client. Likely because this can never happen on a vanilla server. Still there is the issue with the inventory view.

Shouldn't this be on line 231?

I figured that the other message was sent out there too, so I did it there.

But a lot of other conditions make result false other than cancelling the event. In the process method, you can also use the inv variable, which will possibly fix the exception shown above.

But then the reject message for the action would have to be sent before the setslot message

https://github.com/GlowstonePlusPlus/GlowstonePlusPlus/commit/1b0b37d37b58ec003e40b5e0bfc3fb40690d4d1f I've tested it and it works.

Okey then, but what is with the bottom inventory? Did you test that?

It doesn't return the exception, but now I have made it return false for the bottom inventory, in this commit. Thank you for that catch.

Bottom inventory now handled in https://github.com/GlowstonePlusPlus/GlowstonePlusPlus/commit/710d891b8f2a487c752f43d4616ca2057b00d30c


[FEATURE] global configuration file for k3d

It would be nice to have a global configuration file for k3d for setting some things so that users would not need to do that every time they run in every command line.
Users could create a configuration file, maybe in some path like $HOME/config/k3d or $HOME/.k3d/config, where they could add some default values for:

enabling the registry by default
specifying the volume for the registry
specifying a default API port
...

Sample configuration file:
defaults:
  registry:
    autostart: true
    volume: the-registry-volume
  api-port: 6443
  mounts:
    - /home/user/my-dir:/src:rw
  labels:
    creator: k3d

Hello
I'm currently developing this feature for my company. We want to be able to configure some default values for the CLI flags, and a hook system (ex: run this executable after/before) this command.
I will push a PR soon.

Hi @msaunois-dzr how's your progress? :)

Hi @iwilltry42!
Sorry my company has changed its priorities with the coronavirus crisis and I no longer work on this project for the moment.
I will ask to my manager to be re-assigned to my task as soon as possible.

Hi @msaunois-dzr , no worries, i totally understand the different priorities in this situation..
I also think, that things with the configuration file will be totally different and hopefully easier with k3d v3 :)


Create new board from template

It would be nice to have the option of choosing a template when creating a new board.
Definition of Done:

It's possible to pick a predefined template
A set of labels & columns are created with the new board

Firstly great project. This feature sounds great. Any ideas on where you would start? - I am new to react.
It would be good to expand the NewBoardDialog to allow users to select from a template, or to create a blank board. I am stuck at the createBoard function, to include columns and tasks on board creation.

Hey @SeanPreusse. Good question, yes it makes sense to expand the NewBoardDialog.
Do you have backend (Django) experience? Currently the createBoard doesn't support adding additional fields about the columns & tasks that would be created with the new board. This will require some changes in the endpoint that creates the board. I imagine that the templates could be predefined in some way and will just have to send the template id when creating the board. Then the endpoint would create the new board & any columns/tasks/labels that are associated with that template.

Thanks, @rrebase! I will run through a few more tutorials and give it a go.


Hexo 3.9.0

[ ] Read the theme publishing doc or plugin publishing doc. (not applicable)

Based on release note of https://github.com/hexojs/hexo/releases/tag/3.9.0 .

Thanks :)


0.8.1

Checklist

[x] Used a fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

Added package maintainers @areeda and @eagoetz

@conda-forge-admin , please restart CI

@duncanmmacleod could you please review?


Create portable archived package

For Win7/Win8, because QtIFW 4.2.2 cannot run on Win8

QtIFW 4.8 also requires d3d12.dll for no obvious reason

Ready for 2024.2, in #1857  and later fixes


How to use Alamofire.upload(multipartFormData:  to uplaod localize language text

Hello,
I am using Alamofire.upload(multipartFormData: { multipartFormData in.  in my ios app to uplaod image and some paramter list
But in my some parameter value contains Marathi language content but its not showing me properly after using below code
for (key, value) in parameters1 {
if let data = (value as AnyObject).data(using: String.Encoding.utf8.rawValue) {
multipartFormData.append(data, withName: key)
}
}
Please help

This is likely some combination of the encoding of your original String or Data values, the mime types you're setting, and the server handling, so you'll need to investigate every step along the way.
Additionally, we use our GitHub project for bug reports and feature requests. In the future, you should open questions like this on Stack Overflow.
Cheers. 🍻

From our Contribution Guidelines
Asking Questions
We don't use GitHub as a support forum. For any usage questions that are not specific to the project itself, please ask on Stack Overflow instead. By doing so, you'll be more likely to quickly solve your problem, and you'll allow anyone else with the same question to find the answer. This also allows maintainers to focus on improving the project for others.


Set playback speed

It does not appear that the playback speed can be changed. Can you create this control? My use case is to listen to mp3 files at 1.5 speed. Having more granular options would be critical though, if this feature is implemented.

Hi !
This is totally possible with the current Audio implementation. This shouldn't be too hard and this is a nice feature, I'll try to do that ASAP.

[ ] Add an Audio tab in ``Settings`
[ ] Add an ìnput[type=number] in it
[ ] Save conf on input keydown after a delay
[ ] Implement this double in the player

@dawsonbotsford lucky you I'm on holiday. I pushed a ratePlayback option in the settings. Before drafting a new release, I'd like to know if it works well enough for you or if you have any other thoughts.
(you'll need to compile all of that manually, if you can't, I can send you a compiled version of it, just tell me your platform + 32 or 64bits ?)

I'll try the compilation today ~6 hours from now. Busy for now. Thanks!

Will be released in Museeks 0.5.0 tonight.


Increase timeout.

r? @jamesmunns
(rust_highfive has picked a reviewer for you, use r? to override)


speed up convolve2d

/* This could definitely be more optimized... */

signal/firfilter.c

convolution functions could use a bigger overhaul, but this optimization would not be high on the agenda. no content in this issue that needs preserving, so closing. thanks @argriffing


fix misspell "lexicographically" in registry.go

Signed-off-by: fate-grand-order<EMAIL_ADDRESS>

Current coverage is 51.20% (diff: 100%)

Merging #2158 into master will decrease coverage by 1.13%

@@             master      #2158   diff @@
==========================================
  Files           125        125
  Lines         11447      11433    -14
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
- Hits           5991       5854   -137
- Misses         4708       4833   +125
+ Partials        748        746     -2

Powered by Codecov. Last update 11cb04e...e37d23c

LGTM


Docker: Docker Compose instead of a single container running pm2?

Right now we have a single Docker container that manages multiple processes using node pm2. This may be just fine, but I wanted to put up an alternative for discussion. Docker Compose can be used to manage multiple containers at once, and each container could then manage one process. I don't have a strong opinion on this, but maybe something to think about.

I've heard some opinions about the "Origin Box" and was looking into the docker files you have today, (this folder)[https://github.com/OriginProtocol/origin-js/tree/develop/bridge-container] could be called docker folder and you guys could use Docker Compose to simplify things: make the bridge Dockerfile lighter using only itself inside its Dockerfile and create a docker-compose file to link the dependency it needs(redis, postgresql, elasticsearch, etc). you could also could optionally do the same with the origin dapp(perhaps there or even a separate tiny project might be a better place to create the origin box). I'm sorry if some of these things don't  make a lot of sense, I'm still studying how the origin parts communicate and depend on each other.

Hi Marco, check out https://github.com/OriginProtocol/origin-box

I'm in favour of using just docker-compose. I built a development environment based on that which I use and others might find useful: https://github.com/tomlinton/origin-develop.
I think it has a lot of advantages (but also a few disadvantages):

pm2 doesn't add anything over docker-compose if you think of each container as one process, and it is one more thing people have to learn to get up and running
easy to switch out components, e.g. I was testing python 3.7 compatability with origin-bridge and it just requires a single line change and a rebuild of only the origin-bridge container rather than a rebuild of the complete stack
logs are heaps easier to read and manage
you can spin up only what you need, e.g. docker-compose up origin-js if you just want origin-js, docker-compose up origin-bridge for origin-bridge, or just docker-compose up for everything, dependent containers will start automatically
uses docker official repositories so it is a lot quicker to get a stack up and running

Package management is a little tricker in my setup because packages are installed during container builds rather than when the containers are run. Same with database migrations. That doesn't really relate to docker-compose though, it is just how I've set things up.

Thanks for sending this proof of concept for Docker Compose @tomlinton !
Since most developers run Docker on their laptop/desktop, one question I have is regarding host resources consumption (in particular RAM). Based on your testing on your prototype, does Docker Compose use less/more/equivalent RAM than our current pm2 based setup ?

It'll definitely use more because the virtualisation done by docker has to happen once for each container and I'm running 7 separate containers. According to docker stats --all they are using about 1gb of RAM total. I'd guess origin-box would use 100-200mb less than that. I don't think it'd be noticeable on most modernish laptops.

Currently the origin-box just seems to work for me, every time. I love it! My main concern is stability and just-working-ness. How stable is docker-compose?

I use it day to day and it is stable for me, but I'm sure things would pop up if others used it. Incompatibilities in the develop branches between the three components may cause issues, but that isn't really related to the use of docker-compose. The container build process should be more stable than origin-box because of the use of official docker repos for services like postgresql and redis.

@ambertch any thoughts on this topic since you originally implemented origin-box ? :)

I will say that I am very happy with the current setup with pm2. I'll also mention that pm2 actually built this tool specifically for docker, so it's not a hack or anything. http://pm2.keymetrics.io/docs/usage/docker-pm2-nodejs/
What I like about pm2 is that I can go into the box terminal and easily start and stop processes with simple commands. And can also watch logs for specific processes.

pm2 start js
pm2 restart js
pm2 stop celery
pm2 logs bridge

...And so forth. Very convenient.
If docker-compose made this more difficult, I probably would get pretty frustrated. I'd also be curious what practical improvements it would add over our current setup.

Consider these commands (I named things a bit differently, e.g. origin-js instead of just js):

docker-compose up origin-js
docker-compose restart origin-js
docker-compose stop origin-bridge-celery
docker-compose logs origin-bridge

The pm2 approach is less convenient because you have to spawn a shell in the container to run those commands. Additionally pm2 has no concept of dependencies, docker-compose start origin-bridge will start origin-bridge and automatically start any dependencies (postgresql, redis, origin-js). I see pm2 as only adding complexity and an extra thing for new developers to learn. From that link it looks like pm2 may have advantages for node applications, but at this stage we are not using them, and if we want them later we just add pm2 to the node based containers and not use it to run the whole stack.
I understand that it is annoying relearning how to use a development setup and it'll slow you down. The aim of the setup I built was to provide a better experience for new developers (I had an advantage here because I was new to the project). It does offer practical improvements for people already using origin-box though, I'll give two examples:
Tests
Stan pointed this one out in discord yesterday. If you want to test origin-js you have to bring down origin-js, run the tests, then bring origin-js up again because of a port conflict. The docker-compose setup runs the tests in an isolated container with a single command so you can keep your stack running.
Personally thats almost a compelling enough reason on its own to use the docker-compose setup. I don't want to be stopping and starting origin-js to run tests for the rest of my days.
Maintainability
There is an open issue on origin-box to upgrade to postgresql 10, this is what the process would be:

Edit these lines to make sure postgresql 10 is being installed
Edit pg_hba.conf to make sure it conforms to any changes for postgresql 10
Edit postgresql.conf to make sure it confirms to any changes for postgresql 10
Edit this start script to make postgresql 10 start instead of 9.3
Rebuild the container, which necessary involves rebuilding everything (this takes around 10 minutes, I haven't timed it, just a guesstimate)
Restart

With the docker-compose setup:

Change this line from postgres:9.3 to postgres:10.0 (it is done already)
Restart

Want to test things on python 3.7? The procedures are similar.
I encourage you to give it a try, I'll be around in discord if you have any issues. I'll keep maintaining the docker-compose setup while I'm contributing because I use it. My setup is definitely not perfect and people using it are bound to run into issues that I haven't (yet), but I think there are definite upsides.

When I was putting together the development container, not having used docker-compose before, I was thinking it was equivalent to Kubernetes in complexity (in development mode, Kubernetes is run off of Virtual Box, and it also has component services for service management, data store, and API)... it looks like docker-compose is less heavyweight.
I think that if we were starting from scratch with the components we have now, docker-compose might offer a good amount of flexibility, @tomlinton makes some good points. In addition to running tests and maintainability, various parts of the stack might be run locally vs. remotely. For instance, say we wanted to simulate multiple dapp vendors or bridge server-like components operating on the same blockchain: all the components could be pointed to the local environment, with the shared blockchain operating in a remote staging environment.
A hypothetical use case might be if we start experimenting with Plasma or other state channel / layer 2 devices, since there might be a remote main chain and more ephemeral side chains existing in development environments.
That being said, besides reseting state to run tests, it does seem like the current containerized setup works well. In-box processes can be shut off if the scenario requires it, and many people on the team are used to running that environment.
My guess is that as time goes on, as more filed or requested changes to the box are made, there will be more reasons to build a setup using docker-compose and/or convert the environment to be microservices based.

@tomlinton I'm not attached to the current setup, just was pointing out that it seems to be working (relatively) well. Granted, my frame of reference is that I used to have to run and maintain all 3 repos separately on my own machine.
One note on the tests - I'm pretty sure we can easily reconfigure the tests in origin-js to run on different ports. Trivial fix that I just never got around to.
That said you make a compelling argument for docker-compose. Can you open a pull request to this repo? Based on your description it seems great to me.

@tyleryaska you are right, I was being way too dramatic there. :blush: We could fix it up easy.
Do you mean a pull request to origin-box? This issue is on the wrong repo. My setup is a rewrite so it doesn't share any code with origin-box. I could put it on a branch though so people can try it?

+1 for putting this on a branch on the origin-box repo then people can try it and, assuming no blocker, we can merge it to make this the default origin-box setup.

Hey guys, new here! Would love to be able to tackle this and come up with a sample docker-compose file if that's okay

Hi @ahaidery! This discussion was about a docker-compose setup that I put together. I just pushed it to a branch here. We'd be happy to have your contributions and thoughts on it. You might even be the first person to use it apart from me. :grin:

@tomlinton cool! would love to try it out and get back to you with any feedback :+1:

@tomlinton Oh I see, yeah I meant the origin-box repo. I'll take a look at your implementation. 👍

I tried the docker-compose setup this week-end and it worked pretty well for me.
The install succeeded on my first try and the services were stable. Even though I am not familiar with docker-compose, it was fairly simple to figure out the commands I needed.
After playing with the DApp, I made a few simple changes to run the Ganach UI on my host while the services were running in the containers and that worked well too.
So overall pretty happy with this docker-compose setup !
A few minor nits (I can add them as comment to the code if easier):

Add instruction in readme to start a bash into a container (e.g. something like :"docker exec -ti <container_name> /bin/bash -i"
In README, to rebuild a container, command should be: "docker-compose build --no-cache origin-js" (the --no-cache option goes before the container name)
In install.sh , the DApp and bridge server ports are mixed up

One more piece of feedback: having the DApp and Bridge server config files in the origin box repo under origin-box/envfiles might cause those env files to get out of sync with the env files developers commit in origin-dapp and origin-bridge ?
We had ocurrences in the past where developers would add or remove keys from the dev.env files in the origin-bridge repo but would forget to do the same in the origin-box repo. As an attempt to minimize the chances of this occurring again, currently origin-box uses "box.env" envfiles that are checked in under the origin-bridge and origin-dapp. See for ex. https://github.com/OriginProtocol/origin-bridge/blob/develop/box.env Reasoning being the developers are more likely to notice that box.env file and update it if it is sitting in the same repo as the dev.env file they modify.

I'm really liking this @tomlinton . Works great for me! I'll try doing some development with it and see if I have any thoughts.

Couple more things:

I find myself sometime editing some src files of env files from within the container. By default it does not look like the ubuntu image includes any text editor. I work around this by running "apt-get install vim" from within the container. Might be nice to install a basic editor like vi or nano.
ElasticSearch container is commented out - would be nice to have that though can be done as separate PR once we decide docker-compose is the way to go.

Glad to hear its working out @tyleryasaka!

Yep gotcha. This relates to the above issue about where we keep the env files. There is a bit of a trick with how this will have to be setup. We'll have to use volumes so that env files persist across containers (e.g. the origin-bridge-celery env file should be the same as origin-bridge). Easy enough to do!
Not a problem. It was working fine but I just commented it out because of the log spam it produces. I was going to look into a way to decrease the amount of information it logs.

I had a thought regarding env files. What if we remove them from origin-bridge and origin-dapp? If all development happens in the origin-box environment they only need to be included here. If everyone uses origin-box then:

It is easier to provide support/troubleshoot any issues for developers
Origin-box will become a better project through more use

The env files in origin-box will stay up to date because during reviews of pull requests other developers will be using origin-box to test and it'll be easy to spot if someone forgot to update them. It also removes the need to connect directly to containers to modify env files.
The downside would be that we are making everyone do development in a specific way. If someone really wants to run the projects without docker-compose it wouldn't be too hard to figure out though.

Yes, if origin-box is the primary development environment we support/recommend, then imho would be ok to put all env files there for simplicity. Then we can update README on other repos to point to those env files.

One issue I have with my setup is that when I update a JS file in the DApp repo, it does not get detected and does not rebuild the DApp automatically. I have to explicitly restart the service (e.g. "docker-compose restart origin-dapp).
I checked and dockerfiles/origin-dapp does have NODE_ENV set to "development" so not sure what the issue is ?

We do want to continue to support running the repos independently since Docker requires registration, but linking people to env files might be acceptable. @wanderingstan?

@franckc that is strange! I tested it out now and had no issue. Which file are you editing? I did have to rollback to a previous origin-dapp commit on the develop branch because it wasn't compiling at all due to some recent changes. If you watch the log outputs (docker-compose logs -f origin-dapp) you should see webpack trigger a recompilation on any file change, it might be that the compile fails so the changes aren't reflected in the browser. The only other thing I can think of is if you are not in the origin-box/origin-dapp directory and are using a different copy of origin-dapp. (I have done this :grin:).
I'm not registered for Docker as far as I know, I do remember some fuss a while ago about them requiring registrations though. Maybe just for uploading images to Docker Hub? Will have to look into it.

@tomlinton Did a few more tests:

issue is not specific to origin-dapp repo. I have sthe ame problem with origin-js and origin-bridge
when I modify a file from within a container (I spawn a batch then use vi), the change gets detected and a recompile kicks-in
when I modify the file from my host, the file content is changed on both host and in container but no recompile happens. so it looks as if the file-system event don't make it into the container...

I'm running Docker 8.06.0-ce-mac70 on a MacOS 10.13.6

@tomlinton Did a few more tests:

issue is not specific to origin-dapp repo. I have sthe ame problem with origin-js and origin-bridge
when I modify a file from within a container (I spawn a batch then use vi), the change gets detected and a recompile kicks-in
when I modify the file from my host, the file content is changed on both host and in container but no recompile happens. so it looks as if the file-system event don't make it into the container...

I'm running Docker 8.06.0-ce-mac70 on a MacOS 10.13.6

Thanks @franckc looks like it is this issue. I never tested this on OS X. I'll see if I can implement a work around for it.

@franckc I tried a few things on OS X to reproduce (bringing the containers up/down and using docker-compose restart, vim and atom for editors) but couldn't get it to happen. Seems like a very annoying issue though. Anyone else experiencing it?

Just a comment that my clean installation and setup took what seemed like a really long time. It certainly felt noticeably longer than the non-compose version, but I didn't think to time it. When it comes to alleviating developer frustration, we should also consider the possibility than many machines may not have the memory capacity to run this environment. Is that more or less of a concern with compose?

@micahalcorn it makes sense that it would take longer than usual to stand up the environment for the first time since docker needs to download the corresponding images. Is it taking just as long to stand up the environment each subsequent time as well? Should be faster since the images are downloaded.

@micahalcorn It should be significantly faster with docker-compose. This method does a lot of downloading so it is mainly dependent on your network. Without docker-compose it is CPU bound, it does a lot more compiling. I'll time both from a clean install today and see how it looks.
Regarding memory usage, I discussed it a bit above. It uses more this way, but probably only by around 20-30%. I'll put together some measurements on this too.

@tomlinton thanks, sorry I missed that. I skimmed through and searched "memory" but not "RAM". 🤦♂

I benchmarked the builds with time docker-compose build --no-cache and cleared out everything in between with docker system prune -a and docker volume prune. I did it on two platforms. I didn't put the exact specs of the machines here but they aren't really needed as it is just for comparison. Here are the numbers:
Linux (Dell XPS 15)
compose branch - 5:05.02
master branch - 9:03.84
OS X (Macbook Pro 2015)
compose branch - 7:24.08
master branch - 9:46.31
So docker-compose is a fair bit faster in both cases, nearly twice as fast on the Linux test. It might have felt slow but that is possibly because you wouldn't have rebuilt your origin-box container from scratch for a long time. I'm sure we could optimize here and speed things up, but it is a one off process anyway. Some of the stuff that is done at run time in the master repo like npm install:dev is done in the build step with the compose repo, so the compose repo should have a faster startup time once everything is built.
Also checked out memory usage using docker docker stats --all --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}": The compose branch came in at ~1.55gb (sum of memory usage for all containers) and the master branch was 1.471gb (just the single container). It's less of a difference than I thought but docker stats might be a bit disingenuous as I'm not sure it accounts for the overhead of running more containers.

I think it is working well. Not sure if there are any other regular origin-box users who want to give it a go.
I'm a bit concerned about the issue @franckc mentioned. It's a bug in Docker for Mac that we don't have much control over. I couldn't reproduce though. Did you run into it at all @micahalcorn? We could raise it as an issue anyway.
Yep it would negate that. It looks like it would close all the open issues too.

Yes, I'm a bit worried about this issue I encountered. I'd be curious to see if anyone else encountered it.... @wanderingstan you tried the docker compose setup for the website. Were file changes you made from your host (for ex. while editing source code on your Mac) detected in the container and caused automatic recompilation of the stack ?

@wanderingstan that issue you pointed out in Discord with flask-recaptcha should be fixed. Just pull the latest changes and run install.sh -e origin-website again.
@franckc you never experienced this issue with the master branch? From the looks of the issue thread it is caused by volumes and the master branch has them as well. If you were working inside the container you'd never run into it though.

@tomlinton A few more data points:

I downloaded Docker from docker.com - it is version 18.06.0-ce-mac70 (26399)
When I was having the issue on compose branch, the master branch was working fine
I just rebooted my Mac and now things are working fine for me on compose... !

Let me continue using compose over the week-end and see if I can reproduce the issue.

@tomlinton - It's working! Awesome. 🎉 Thanks for the clearly documented steps.
@franckc - Yes, it appears to detect local changes. I edited some text on the homepage and it was automatically there when I reloaded the page.

Following up: my compose setup was stable over the week-end after I rebooted my laptop on Fri. So maybe the bug I encountered was just caused by some weird instabilities on my Mac ?  Anyway, given that nobody else had that issue, I think we can consider it is not blocking for moving forward.
If everyone is happy with docker compose, I'd suggest we make it our default origin-box setup by merging the "compose" branch into master. Any objections ?

So I spent a few hours today trying to get the compose branch to work. It's probably just something weird on my end, but my origin-dapp will not start properly. Some of the modules are apparently not being installed.
I tried rebuilding several times, including with the no-cache option. Same error every time.
If no one else is having this issue I'm fine with merging to master, but I am a bit confused why it's not working. It's hard to troubleshoot because I can't inspect the files in the container.

@tyleryasaka I think you are missing #289 from your local copy of origin-js. The origin-js, origin-dapp and origin-bridge directories are placed directly in the containers so you can check out the files in there to debug. If you pull down the latest stuff on the develop branch in all three you should be fine, but let me know if not.

Actually more likely the corresponding PR from origin-dapp that you are missing. :grin:

@tomlinton I checked several times that I pulled the latest changes from develop when troubleshooting, so I don't think that was the issue. And yeah I realize the files are synced between local filesystem and container, I just wanted to check the node_modules directory inside the container (which is not synced).
I will keep troubleshooting though. Thanks!

I have seen those errors before, but I can't remember how I fixed it. :disappointed: Here are some things that might help debugging though:

The origin-js node_modules folder is a volume. Run docker volume ls and you should see a volume called origin-box_origin_js_node_modules. You can then run docker volume inspect origin-box_origin_js_node_modules and it'll show you the path to it on your local machine next to "Mountpoint". Unfortunately the origin-dapp node_modules is not a named volume like this.
Running docker-compose down followed by docker system prune -a and docker volume prune will give you completely fresh start. Then just rerun the install.sh.

Let me know if you figure it out so we can capture what caused it in the documentation and/or try and fix it.

Ok, finally got things working! I think some sort of caching was the culprit. Removed all my docker images and rebuilt everything from scratch, and that got it. Used https://stackoverflow.com/questions/46487684/docker-compose-cannot-find-new-node-module as a guide.

I created a PR to merge the compose branch to master. https://github.com/OriginProtocol/origin-box/pull/29

Completed by https://github.com/OriginProtocol/origin-box/pull/29


Documentation request: Hello world for distributed operation

Could we make a Hello World example of how to do multi-server distributed operation in Bastion? It would be helpful to folks like me who are evaluating Bastion for an Erlang-style use case.
Thank you!

As soon as possible we will make this available. Please bear with us.

Hi @rw as promised you can find an example here:
https://github.com/bastion-rs/showcase/blob/master/bastion-cluster/src/main.rs
This example forms a Bastion Cluster that enables message passing between distributed actors.
Received remote messages can be replicated and destined to local actors and enable further processing.
Thanks for bearing with us!


Erro in isNotBurstSuppressed function

The error is : TypeError: 'type' object is not subscriptable
and how to use this code to run eeg data, can you give a example?

This is still very much a work in progress so isn't functional yet

This is still very much a work in progress so isn't functional yet

I just tried original mat lab code, using vitaldb dataset, it doesn't seems giving me the right score. Does matlab open ibis code works for you?


Add Debian Jessie support

These changes add support for Debian Jessie and bump the version number up to 0.6.0.

Oops, logged into the wrong account.


Fix/openldap

Motivation for this change
Add configDir Option to openldap-module to use a slap.d-config-dir instead of slapd.conf (useful for migration from an existing ldap-server
Enable module support (build-option) for openldap package (major support for existing ldap-setups)
Things done

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

[x] NixOS 16.09
[ ] OS X
[x] Linux (Nix @Ubuntu 16.04)

[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Fits CONTRIBUTING.md.

Hi, thanks for you contribution. Could you however make a new branch, where only the changes you described are included (openldap) and maybe with consistent author ("System administrator").

Deprecated by https://github.com/NixOS/nixpkgs/pull/19288


Refactor OrderItem from a B on Code Climate

https://codeclimate.com/repos/54c2c15e69568066da0003ed/OrderItem

Closing.  Dead link to old CodeClimate account,


Option to lowercase input

As per our discussion, it would be nice to allow for input lowercasing. I'd see that as a main setting: lowercase_input: True and would be false by default in settings.

I thinks this is done already.


Update dependency pytest to v8.3.2

This PR contains the following updates:

Package
Type
Update
Change

pytest (changelog)
project.optional-dependencies
patch
==8.3.1 -> ==8.3.2

Release Notes

pytest-dev/pytest (pytest)
v8.3.2
Compare Source
pytest 8.3.2 (2024-07-24)
Bug fixes

#12652: Resolve regression [conda]{.title-ref} environments where no longer being automatically detected.
-- by RonnyPfannschmidt{.interpreted-text role="user"}

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[x] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

cf https://github.com/robert-koch-institut/mex-editor/pull/117


[UI] Kubernetes Service Accounts: Formatting of Automount / Service Account Token field.

Current Behavior
@harkiratsm will you investigate the formatting and display of this field?
Screenshot:

Environment

Meshery Server Version: stable-v0.6.108

Contributor Guides and Handbook

🎨 Wireframes and designs for Meshery UI in Figma (open invite)
🖥 Contributing to Meshery UI
🙋🏾🙋🏼 Questions: Discussion Forum and Community Slack

#8222 8222


add VNU-HCM domain

@hahahazzz I am sorry, the domain stu.t.edu.vn is blacklisted because the school allows to register an email address there even if you are not a student of the school. If you are the student of this school, please apply with official document (OFFICIAL DOCUMENT tab at https://www.jetbrains.com/shop/eform/students).

@hahahazzz I am sorry, the domain t.edu.vn is blacklisted because the school allows to register an email address there even if you are not a student of the school. If you are the student of this school, please apply with official document (OFFICIAL DOCUMENT tab at https://www.jetbrains.com/shop/eform/students).


sol-fbp: Add SOL_ATTR_PRINTF() to sol_fbp_log_print()

By declaring the prototype of this function with this attribute, the
compiler will perform a couple of checks to ensure that the varargs are
actually of the correct type for the printf-style formatting strings,
in addition to only allowing literal strings being passed to the format
string argument.
This fixes a few crashes in the generator while printing errors,
including a few call sites that passed user-controlled strings as the
formatting string.
All known places that had problems were fixed, and this attribute
will ensure these won't happen in the future.
Signed-off-by: Leandro Pereira<EMAIL_ADDRESS>

Merged, thanks!


A question about debugging with the anaconda envs

Hi Evan. I follow all the flow and come to step 3b. with your script 'TFLite_detection_image.py'. But I cannot run the script properly and there is no errors back.
I wonder how can I set the checkpoint to figure out how the codes being bypassed. You see I tried inputting both image_dir and image, the error shows up which indicates line 53 is run indeed. Somehow I need to figure out why the for loop in line 103 is bypassed. Any suggestions?
The snapshot is attached below. Thanks in advance.

I rebuild the tensorflow and make sure the version matches the version of the tensoflow used to train my ssd_v2_quantized model. When I tried this step, it just initialized tensorflow and pop out.
Any thoughts about this?

Hi Evan. I figured out what was wrong in TFLite_detection_image.py. And it works now, I have submitted the commit to the code.


Puppet hostie dev

merge hostie-dev branch to master

This PR has been approved twice.
I saw that you first created a PR 1 to a branch at first, then after we merged the PR 1, you created a PR 2 again to merge to the master.
IMHO, we can simplify this process to just create one PR from the fork to our master branch, which will save some time for our team.
Just FYI.

Yes,  I create pr to wechaty/python-wechaty#hostie-dev branch, So  merged code exist in hostie-dev branch,  otherwise master branch.  So, I need to remerge it to master branch.
Can I use merge command to complete merging process?

Of course. As a committer of our Python Wechaty project, please feel free to merge a PR when you believe it's good enough and you are satisfied.
Go ahead and let's move on!


Fix sass lint errors

This fixes the existing sass lint errors. While most of the errors were fixed in the sass files, there were some adjustments to the lint rules as well.
lint rule adjustments:

no-color-hex - I see no reason to enforce this rule. I don't see any benefit
nesting-depth: 2 - I feel 2 is not enough, this makes it very hard to override inherited styling or to specify styles on pseudo elements. Allowing 3 would remove existing errors.
no-important - while I understand why we might want to disallow this, i think it is unrealistic. Without !important it is very hard to override styles especially given only 2 (or 3) nesting depth
class-name-format - added exceptions for overrides of styles on components from dependencies (angular-drag-and-drop-lists)

I moved a lot of color definitions from various sass files into the _colors.sass file. However, it would be good (as @AllenBW mentioned in #291) to define application colors for each and use only the application defined colors in the various sass files. This PR does not address that issue.
@chriskacerguis @AllenBW @dtaylor113

👋 @jeff-phillips-18 thanks for the mention!!  also for moving color definitions <3 you're a 👑 among 🍠 for undertaking this work...

agreed absolutely
agreed absolutely
disagree absolutely, there are presently 12 of these to resolve, if need be I volunteer myself as tribute 🕊  !importat is horrible and disgusting and the worst thing ever and should never be allowed to exist

agree absolutely

@AllenBW That's a bit harsh on the !important 😉   I agree it should be used sparingly and as you state there are only 12 instances in the code base now. Sometimes it is necessary to use !important especially given the nesting level limits.
I will take another shot at removing them and report back what I find.

Truth, very harsh, you'll have to forgive my pre-lunch thoughts on important 😆  (but still its super bad).

@AllenBW I was able to remove current uses of !important and added the rule back.

@jeff-phillips-18  YOU ARE THE MAN 🕴 🕴 🕴

Thanks @AllenBW & @chriskacerguis for accepting the adjustments to items 1, 2 & 4,  @jeff-phillips-18 thanks for bringing those to their attention and fixing those issues associated with !important.  If similar issues come up in the future, let's discuss again.


findinfiles: Don't exclude any files if exclude pattern is empty

Pull Request Checklist

[x] Read and followed this repo's Contributing Guidelines
[x] Based your PR on the latest version of the correct branch (master or 3.x)
[x] Followed PEP8 for code style
[x] Ensured your pull request hasn't eliminated unrelated blank lines/spaces,
modified the spyder/defaults directory, or added new icons/assets
[x] Wrote at least one-line docstrings for any new functions
[ ] Added at least one unit test covering the changes, if at all possible
[x] Described your changes and the motivation for them below
[x] Noted what issue(s) this pull request resolves, creating one if needed
[x] Included a screenshot, if this PR makes any visible changes to the UI

I'm sorry for not including test cases for the changes. I think it would be very useful to have automated test cases for this, because the corner cases of the pattern matching algorithm are tricky.
Description of Changes
This addresses issue #7811, making findinfiles not ignore all files if the exclude pattern is empty.
Issue(s) Resolved

Fixes #7811

I just found the right spot for widget test cases (I was looking at plugins/tests/test_findinfiles.py instead of widgets/tests/test_findinfiles.py). I will close this pull request temporarily and reopen it after I write the test cases.


Add searching gif and feedback when search running. Fix #1069

Does what it says on the tin.

When I search on the study page I can't see the wait logo (even when doing large searches), where should it be? Note that I had to pull this to branch 1084-qiita-pet cause I have already applied the database changes.

It should be showing up under the search bar

Coverage remained the same at 79.04% when pulling f0a574df9403e4de9488490817cc6be38a42cdf7 on squirrelo:issue-1069 into d43578190bdf6dd83bc25727bcc3be6ca7418935 on biocore:master.

:disappointed: can't see it, have you tested with that branch?

not with that branch, no. I'll take a look

Coverage remained the same at 79.04% when pulling 20f682b13b222c511d33a14972d4c4a28606767b on squirrelo:issue-1069 into d43578190bdf6dd83bc25727bcc3be6ca7418935 on biocore:master.

Should be good to go

Thanks, it's working now. However, the search completed message is a bit misleading as the query finished but the rendering on the website is still not done. Not sure how to fix this, perhaps simply adding "Search complete (finishing rendering): query" .

That should not happen, as the render call happens before that text is added to the page.

I think this is working well, though I don't have enough studies to see the animated gif.
The only thing I wanted to bring up, is the fact that there's not enough feedback when two queries that retrieve no results are subsequently entered, see for example this:

It is only clear that something changed when you enter a query that retrieves studies, otherwise it's a bit hard to catch.
Perhaps using some sort of jQuery animations or highlighting that info box somehow else would do the trick.

If you see @ElDeveloper's gif, he has the same behavior that I saw. The text under the text box says: "Search Completed: study_title includes soil" but the list still says "No studies found". In the next frame the studies appear.

His gif is actually working correctly, he just has no results found. I can add (X studies found) to the end of the search if it makes it clearer.

Now the page grays out when you search so that you know when the search is running and when you have results. Minimum of 400ms gray so no matter how fast the search completes you still see the gray out.

Awesome, thanks!
On (May-29-15|14:46), Joshua Shorenstein wrote:

Now the page grays out when you search so that you know when the search is running and when you have results. Minimum of 400ms gray so no matter how fast the search completes you still see the gray out.

Reply to this email directly or view it on GitHub:
https://github.com/biocore/qiita/pull/1220#issuecomment-106943476

:+1:

Coverage remained the same at 79.04% when pulling ca261248afe8aa3f3c0864e00153381415a8be6d on squirrelo:issue-1069 into d43578190bdf6dd83bc25727bcc3be6ca7418935 on biocore:master.


construct functions to be defined as well as {thing}_factory

order of attempts:
{thing}_factory/2
{thing}_factory/1
construct/2
construct/1
(if construct/2 is defined, it will always be used instead of construct/1)
@jfeeny was interested in introspecting metadata attached to struct modules in order to provide sane defaults without needing manually to register person_factory, for example, you could do something like this:
defmodule Factory do
  use ExMachina
  def construct(type) do
    struct = Module.camelize(type)
    fields = struct.describe() # __schema__ in ecto, for example
    fields
    |> Enum.map(fn {name, type} ->
      {name, default_for(type)}
    end)
    |> struct!(struct)
  end

  defp default_for(:string) do
    generate_fake_cat_name()
  end
end

Howdy @byronanderson! Now that ThoughtBot has passed this library on to us we're in the process of getting things updated 🎉 I was looking at your PR but I what I lack is the context for this change, can you point towards any issues or discussions around the need for these new functions?
Separately, if we are going to add new capabilities I would like us to include documentation along with the changes.


add squeezeboxrpc to stable

please add squeezeboxrpc v1.0.0 to stable repository

RE-CHECK!

Automated adapter checker
ioBroker.squeezeboxrpc

:thumbsup: No errors found
Add comment "RE-CHECK!" to start check anew


Spotify Extension: support deeplink context

Description
Support setting the initial search value through deeplinks, ie:
raycastinternal://extensions/mattisssa/spotify-player/search?context=%7B%22query%22%3A%22pedro%22%7D

Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed outside of the metadata folder

Adding for future reference, here's a deeplink example with a keyword argument, borrowed from the "Super pro Spotify search" segment in Raycast Quicklinks: 7 ideas from Newbie to Pro Users video:
raycast://extensions/mattisssa/spotify-player/search?context=%7B%22query%22%3A%22{Query}%22%7D


Provisioning logs moving from the cluster object to a configmap

Detailed Description

Ability to review the provisioning logs in more detail as provisioning is in progress for a cluster
Context

Currently, the logs are written as a last line to the cluster object and reads from there in the UI. The backend is changing to be written to a configmap, so the UI will need to be updated to read the config map.
In the cluster detail page, there should be a tab for "Provisioning Log" so see the logs of provisioning.

Reproduced in 2.6.2 where you see no link to Provisioning Log (see screenshot)
Verified in v2.6-4375161a2780765f0fd58af2936876a3e0254741-head
New behavior shows flowing logs after a certain point during the provisioning. These are retained and viewable in the UI. See screenshot


Spacing multiple lines

I'm wondering if there is an acceptable way to allow custom spacing rather than a
 between skeleton lines. Could this be a prop that changes a CSS gap value for a column flexbox?
https://github.com/dvtng/react-loading-skeleton/blob/1cb22a1a7a857ef9aff03a1521204180ffb5e91a/src/Skeleton.tsx#L114

Hmm, what is the exact problem you are encountering? Can you fix it by setting the line-height?

I've got a list of items in a column flex that have a gap of 0.5rem, and line-height of 24px.

I'd like the loading skeleton to look like this (current code: <Skeleton count={5} height={24} style={{ marginBottom: 4 }} />):

But without custom styling, it looks like this <Skeleton count={5} height={24} />:

Thanks, that helps. The philosophy when using react-loading-skeleton is to have your skeleton JSX match the "real" JSX as closely as possible.
Your "real" JSX (when the search results have loaded) is something like this:
return

Value 1

Value 2

Value 3

So I would make the Skeleton JSX like this:
return

<Skeleton />

<Skeleton />

<Skeleton />

That way, the skeleton screen will use the same line-height, gap, .etc as the screen with the real data displayed. Let me know if that makes sense.

It makes sense, so if you had an array of data returned from an API call, would you suggest something like this?
  return (

      {results.length > 0
        ? results.map((item) =>
{item}
)
        : [...Array(5)].map(() => (

              <Skeleton />

          ))}

  )

That's the right idea. I would define a component like this:
function SearchResult({ item }) {
    return
{item ? <>Real data goes here</> : <Skeleton />

}

Alternatively, you can use the wrapper prop which works well with the count prop. There is an example of this in our Storybook here.

Closing as I think your question has been answered. Let me know if there is anything else you want help with.


BUG When adding an item twice in the cart from the API

When adding an item twice in the cart in separate times instead of adding by quantity. the cart returns a string in one of the objects in the json the first time, and the second time the same object is returning integer.
Steps to reproduce

add an item with quantity of 1 to the cart.
do a request to checkout/cart,
you get the json below; the quantity is string:

    "additional": {
         "token": "true",
          "product_id": "2727",
          "quantity": "1",
          "is_configurable": "false"
     }

add the same item again to the cart;
now when you do another request to the checkout/cart
you get an integer for quantity:

    "additional": {
           "token": "true",
          "product_id": "2727",
         "quantity": 2,
         "is_configurable": "false"
    }

Hi @Xoshbin,
I am checking this will update you soon.