make Libcarla.client.rss error:- c++: internal compiler error: Killed (program cc1plus)

Hi, I am using a machine with the following specs:-
Ubuntu - 18.04, Carla - 0.9.9 RAM 8GB Graphics - 4GB GPU.
I faced an issue with make LibCarla.client.rss:- The log messages are as below.
Ad-rss.sh: Compiling ad-rss-3.0.0.
Starting >>> spdlog
Starting >>> ad_map_opendrive_reader
Finished <<< ad_map_opendrive_reader [15.4s]
Finished <<< spdlog [18.0s]
Starting >>> ad_physics
[Processing: ad_physics]
Finished <<< ad_physics [41.1s]
Starting >>> ad_map_access
Starting >>> ad_rss
[Processing: ad_map_access, ad_rss]
[Processing: ad_map_access, ad_rss]
Finished <<< ad_rss [1min 21s]
[Processing: ad_map_access]
[Processing: ad_map_access]
[Processing: ad_map_access]
[Processing: ad_map_access]
--- stderr: ad_map_access
c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.
make[3]: *** [python/CMakeFiles/ad_map_access_python3.dir/AdMapAccessPythonWrapper.cpp.o] Error 4
make[2]: *** [python/CMakeFiles/ad_map_access_python3.dir/all] Error 2
make[2]: *** Waiting for unfinished jobs....
In file included from /home/build/carla/Build/boost-1.72.0-c8-install/include/boost/preprocessor/repetition/enum.hpp:17:0,
from /home/build/carla/Build/boost-1.72.0-c8-install/include/boost/preprocessor/enum.hpp:15,
from /home/build/carla/Build/boost-1.72.0-c8-install/include/boost/function/detail/prologue.hpp:20,
from /home/build/carla/Build/boost-1.72.0-c8-install/include/boost/function/function_template.hpp:13,
from /home/build/carla/Build/boost-1.72.0-c8-install/include/boost/function/detail/maybe_include.hpp:15,
from /home/build/carla/Build/boost-1.72.0-c8-install/include/boost/function/function0.hpp:11,
from /home/build/carla/Build/boost-1.72.0-c8-install/include/boost/python/errors.hpp:13,
from /home/build/carla/Build/boost-1.72.0-c8-install/include/boost/python/handle.hpp:11,
from /home/build/carla/Build/boost-1.72.0-c8-install/include/boost/python/args_fwd.hpp:10,
from /home/build/carla/Build/boost-1.72.0-c8-install/include/boost/python/args.hpp:10,
from /home/build/carla/Build/boost-1.72.0-c8-install/include/boost/python.hpp:11,
from /home/build/carla/Build/ad-rss-3.0.0/build/ad_map_access/python/AdMapAccessPythonWrapper.cpp:13:
/home/build/carla/Build/ad-rss-3.0.0/build/ad_map_access/python/AdMapAccessPythonWrapper.cpp: In function ‘void init_module_libad_map_access_python()’:
/home/build/carla/Build/ad-rss-3.0.0/build/ad_map_access/python/AdMapAccessPythonWrapper.cpp:870:1: note: variable tracking size limit exceeded with -fvar-tracking-assignments, retrying without
BOOST_PYTHON_MODULE(libad_map_access_python){
^
make[1]: *** [all] Error 2
Failed   <<< ad_map_access [3min 29s, exited with code 2]
Summary: 4 packages finished [4min 28s]
1 package failed: ad_map_access
1 package had stderr output: ad_map_access
1 package not processed
Util/BuildTools/Linux.mk:138: recipe for target 'ad-rss' failed
make: *** [ad-rss] Error 2
I am suspecting that this issue is related to minimum RAM requirements to integrate RSS with carla since I observed that the cc1plus process was running with two instances and each instance used more than 45% of RAM while running the make LibCarla.client.rss command.
Can you please provide a solution to this issue?

@berndgassmann could you please have a look at this?

Hi,
can you try adding
--executor sequential
to the colcon build command within Ad-rss.sh
https://github.com/carla-simulator/carla/blob/master/Util/BuildTools/Ad-rss.sh#L80
I believe, this might solve the issue.


Correct usage of 'Branch' in german translation

Fix articles
Same word for default branch everywhere

@hakito I noticed you've updated the locales for non-English languages. These will be overwritten during the sync from our translation tool Crowdin. If you'd like to contribute your translations, please visit https://crowdin.com/project/gitea. Please revert the changes done on these files. :tea:

@lunny I just updated translations via crowdin!

@lunny I just updated translations via crowdin!

Translations will be merged automatically.

@hakito Thanks, I will look through Crowdin soon :)


Fix different grayness levels on parent and child messages.

Details
Fix different grayness levels on parent and child messages.
Fixed Issues
$ https://github.com/Expensify/App/issues/24263
PROPOSAL: https://github.com/Expensify/App/issues/24263#issuecomment-1669655689
Tests

Be Offline.
Go to any chat.
Send a message.
"Reply in thread" on that message.
Send a reply.
Verify that there is no difference in the grayness between parent and child messages.

[x] Verify that no errors appear in the JS console

Offline tests

Same as tests
QA Steps
Same as tests

[x] Verify that no errors appear in the JS console

PR Author Checklist

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

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

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

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

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

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

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

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

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

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

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

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

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

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

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://github.com/Expensify/App/assets/13113013/bbf2e7f6-e72a-4d30-9ac8-d33b9f7d4b5f

Mobile Web - Safari
https://github.com/Expensify/App/assets/13113013/8c0de03f-66c3-4b5b-9e14-9dc40f1478f0

Mobile Web - Chrome
https://github.com/Expensify/App/assets/13113013/6e68c553-1736-4b97-9e4c-faf9609f5238

Desktop
https://github.com/Expensify/App/assets/13113013/31a294a0-358e-474b-8d63-0b1b3c52212d

iOS
https://github.com/Expensify/App/assets/13113013/f7d991b9-06ee-44f1-88b2-4dd940bb68d3

Android
https://github.com/Expensify/App/assets/13113013/3c1a4e2c-0e0f-48b3-9ebb-5d815190d7d4

@ginsuma Sorry for the confusion but Solution 1 from your proposal is what I was expecting. Can you please update your PR.

@ginsuma Can you please merge with main. May be the issue on performance was pre-existent in main.

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/techievivek in version: 1.3.58-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

Hello guys! This PR caused this regression! https://github.com/Expensify/App/issues/26204#issuecomment-1697517617

I am reverting the PR since the contributor is not online to fix it and that way we don't need to rush it.

🚀 Deployed to production by https://github.com/luacmartins in version: 1.3.58-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to staging by https://github.com/techievivek in version: 1.3.59-0 🚀

platform
result

🤖 android 🤖
failure ❌

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/luacmartins in version: 1.3.59-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅


如何设置更长的上下文(context)

我分别量化了chatglm3和chatglm3-32k两个模型，请问如何设置他们的context大小.
我看到很多文件都需要修改，请问能否出一个文档来说明一下

can't we just change the file openai_api.py from 512 to 32 k ?

It seems not work. I have an article , whose token len is 20069, I use tiktoken to compute. I found that if token len more than about 6000, the model will be no respnse(http 200, no output). Is this issue caused from token limit? @x4080

I'm not sure, I just saw that we can chang the limit from that file - Thanks for clarifying that it wont work

same problem

same problem

solved, see #136


CameraFlyTo and  Scene mode

I try to setting default location at beginning in 2D mode but it doesn't works:
return (
    <Viewer full>
      <Scene mode={SceneMode.SCENE2D} />
      <CameraFlyTo
        duration={0}
        destination={Cartesian3.fromDegrees(-15, 85, 100000)}
        once={true}
      />
    </Viewer>
  );
}

This code works without the Scene parameter mode={SceneMode.SCENE2D}
It also works at click event without the once={true} (but not at beginning)
"resium": "^1.12.0"
Regards

Try the latest version of Resium and reopen if the issue persists.


Move argparse to utils; update help text, metavars, and var names.

This moves the argument parsing to utils.py, where it can be imported by the shell completion command. Perhaps it should be in its own file, but this seemed like an ok place for now.
This also includes numerous language tweaks I made to the help text and metavars for readability and consistency.
Lastly, the argument vars themselves were updated to match the metavars, which required some changes to the command files themselves, In general, I went for updating all variables, but sometimes I went for a less intrusive approach, as the entire file would change, and there was already other visible refactoring to be done. I left those for later.

All tests pass. Merging.


palindrome

@amritansh22 please have a look at my pr.

@ishi0301 Can you please verify me that your previous pull requests incremented the count of pull requests opened by you on Hactoberfest dashboard

Yes it's showing on the hacktoberfest dashboard. But i closed my pr. So after 7 days it will automatically be declared null. So this might be counted. @amritansh22

Okay I am merging this PR and tell me if count is incremented.

Okay @amitsaini4556 thank you.


added explicit export list to Char.elm

meant to address part of https://github.com/elm-lang/elm-lang.org/issues/173

When exporting a type alias, like KeyCode here, will the importing module "know" that KeyCode is  Int, or will this be opaque from the outside?

As things stand, the outside module will know. I think this is the right way to go in the sense that you can do hiding with type KeyCode = KeyCode Int and we'll eventually do the same unboxing trick that OCaml and Haskell do (the newtype trick in Haskell)


Android Studio presence changes flutter toolchain

Issue: Flutter uses the version of java bundled with android studio by default instead of the base system version, this is a problem because the android studio java (11) doesn't support HmacPBESHA256  an algorithm used to sign builds when deploying for android.
The only way to fix this currently is to remove android studio and develop with an alternative like visual studio code which is not sufficient as android studio is a much better IDE.
Steps to Reproduce

Create a flutter project and follow the steps here to signing the app https://docs.flutter.dev/deployment/android#signing-the-app
Note: This issue originally started when trying to develop on a windows and mac machines where it wouldnt build development or release builds of our app due to the lack of the HmacPBESHA256 algorithm on JAVA 11.  When running flutter build apk or flutter build appbundle or flutter install on a physical device. the app would generate a stack error of this.

Execution failed for task ':app:packageRelease'.
> A failure occurred while executing com.android.build.gradle.tasks.PackageAndroidArtifact$IncrementalSplitterRunnable
   > com.android.ide.common.signing.KeytoolException: Failed to read key upload from store "C:\Users\*\StudioProjects\*\*\app\upload-keystore.jks": Integrity check failed: java.security.NoSuchAlgorithmException: Algorithm HmacPBESHA256 not available

I followed the suggestion on stack overflow and changed the version of Java to Java 17, from the project structure page

and also from gradle -version, it says that it uses java 17

but i am unable to run flutter build apk and flutter build appbundle
due to the same error
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:packageRelease'.
> A failure occurred while executing com.android.build.gradle.tasks.PackageAndroidArtifact$IncrementalSplitterRunnable
   > com.android.ide.common.signing.KeytoolException: Failed to read key upload from store "C:\Users\**\StudioProjects\**\android\app\upload-keystore.jks": Integrity check failed: java.security.NoSuchAlgorithmException: Algorithm HmacPBESHA256 not available

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1m 34s
Running Gradle task 'assembleRelease'...                           95.2s
Gradle task assembleRelease failed with exit code 1

Flutter Doctor (note: android toolchain, uses java 11)

I updated my enviroment variables for JAVA_HOME and STUDIO_JDK to my base java version and its unable to work
PS C:\Users\Victor Popoola> $Env:STUDIO_JDK
C:\Program Files\Java\jdk-17.0.1
PS C:\Users\Victor Popoola> $Env:JAVA_HOME
C:\Program Files\Java\jdk-17.0.1
PS C:\Users\Victor Popoola>

so i found the solution by:  Uninstall Android Studio
Flutter doctor - without android studio installed, (it uses java 17 instead of 11)

after uninstalling android studio, I am now able to run and build my app with the system version of java.
I am unable to build my app for android or install on host devices due to the fact that Flutter will choose the java version bundled with android studio over the one installed on the base system. i have had this issue with mac and windows machine and the current solution for this seems to be uninstalling android studio.
if you reinstall android studio, the same issue comes back and you are unable to get any work done. Unfortunately android studio is a much better ide for flutter than visual studio code. so i am providing this issue with the hopes that it gets fixed.

Code sample

create a simple flutter project
follow the guide here to sign the app https://docs.flutter.dev/deployment/android#signing-the-app
modify android/app/build.gradle to utilize the keytool

signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
            storePassword keystoreProperties['storePassword']
        }
    }
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            signingConfig signingConfigs.release
        }
    }

try and build the app.

@VictorXLR
Check this SO link and underlying comments and see if any of them help to resolve this issue.
Also, there's similar open issue reported in flutter/website repo, since the instructions were followed using the steps mentioned in it: https://github.com/flutter/website/issues/5871. Check underlying comments from it to see if they help.
Closing from here, since it may be related to Android Studio itself and not with Flutter framework. If you disagree, write in comments and I'll reopen it.

Hi,
I have been on that SO page multiple times and setting my java version in gradle.properties to my system path didnt help,
I already have my keytool signed with the -storetype jks arguement too. I use jetbrains toolbox on my mac and desktop and i am running on the latest version of android studio bumblebee patch 1
the problem isn't with android studio but with flutter as flutter doctor -v will use the version of java bundled with android studio instead of the base system one.
The only way i am able to fix it is for me to uninstall android studio entirely, no matter how many times i try to build my app bundle with android studio installed, it never worked until i removed android studio and then flutter doctor -v would use the system base java version over the one bundled with android studio.
Even with android studio closed and from the terminal and with ./gradlew -version showing java 17, it will still use java 11 from android studio over anything else. I updated my environment variables in my initial issue message and it didn't work.
I provided screenshots of my flutter doctor with android studio installed and not installed in my initial message to show the difference

I same issues

Hi, can you open this, its not a duplicate


How to generate the results for VOC data without annotations

Hi there,
I want to get the test results to submit( the real test but not the val), and there are no XML annotation documents for the test.
However, in mmdet, there must exist these file which I think is useless.
Can you fix it by ignoring the annotation loading when we choose '--format-only'?
And are there any ways to fulfil the requirement by mmdet except creating XML files the same number as the test images?
THX!

Is there any solutions?

Just to generate some fake annotations, it works for me
import os
import shutil
img_path = '0/' # path saves images to be tested
img_list = os.listdir(img_path)
file_len = len(img_list)
for i in range(file_len):
dst_name = 'xml/' + img_list[:-4] + 'xml'
shutil.copyfile('1.xml', dst_name)  # 1.xml is the annotation of a training sample/picture

Just to generate some fake annotations, it works for me
import os
import shutil
img_path = '0/' # path saves images to be tested
img_list = os.listdir(img_path)
file_len = len(img_list)
for i in range(file_len):
dst_name = 'xml/' + img_list[i][:-4] + 'xml'
shutil.copyfile('1.xml', dst_name) # 1.xml is the annotation of a training sample/picture

the upper shows a great template to generate the annotation, but I think the official group should do something to deal with this kind question which is my purpose to put this issue.


[TS-1255](taosdump): fix the 'Value too large error'.

we should pick up the minimal change if it has already fixed the issue instead of including other changes.


Support new site layout

This updates the script to work with the current linuxacademy site layout
Fixes #42

I can confirm this works.


Always update thumb position after drag

Describe the changes you have made to improve this project
Always update thumb position for ToggleSwitchButton after drag
Additional context
Not sure if this does not break anything, really.
Closed Issues
#3458

@DomasM your changes have been merged, thanks for your contribution 👍


inference issue

Hi I'm trying to inference on some of my images and it runs successfully with images with 4:3 ratio, but when I tried on images with size 720*480 there shows some error

(planerecnet) kb249@kb249:/media/kb249/K/liuxiaohan/PlaneRecNet$ python simple_inference.py  --config=PlaneRecNet_101_config --trained_model=weights/PlaneRecNet_101_9_125000.pth --image=test_images/00000206_10002.jpg
Inference image: test_images/00000206_10002.jpg
/home/kb249/anaconda3/envs/planerecnet/lib/python3.6/site-packages/torch/functional.py:445: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at  ../aten/src/ATen/native/TensorShape.cpp:2157.)
return _VF.meshgrid(tensors, **kwargs)  # type: ignore[attr-defined]
Traceback (most recent call last):
File "simple_inference.py", line 357, in
inference_image(net, args.image, depth_mode=args.depth_mode)
File "simple_inference.py", line 152, in inference_image
results = net(batch)
File "/home/kb249/anaconda3/envs/planerecnet/lib/python3.6/site-packages/torch/nn/modules/module.py", line 1102, in _call_impl
return forward_call(*input, **kwargs)
File "/media/kb249/K/liuxiaohan/PlaneRecNet/planerecnet.py", line 93, in forward
mask_pred = self.mask_head(mask_features)
File "/home/kb249/anaconda3/envs/planerecnet/lib/python3.6/site-packages/torch/nn/modules/module.py", line 1102, in _call_impl
return forward_call(*input, **kwargs)
File "/media/kb249/K/liuxiaohan/PlaneRecNet/planerecnet.py", line 492, in forward
feature_add_all_level += self.convs_all_levelsi
RuntimeError: The size of tensor a (107) must match the size of tensor b (108) at non-singleton dimension 2

And this is my test image

Hi, that's because the image width and height should be divisible by 32. You can write a small function to pad zeros to the resized image so that H and W are divisible by 32. I will also do the same in the next update.

Hi, that's because the image width and height should be divisible by 32. You can write a small function to pad zeros to the resized image so that H and W are divisible by 32. I will also do the same in the next update.

ok thanks for your reply and great work


Update contrib guide

#411 take two. Parts of the how-to-contribute article hadn't been updated to reflect the closing of the community contributions GitHub project. Also removed some redundant content.
@gewarren @BillWagner Please review.

#sign-off

@Jim-Parker This is ready to merge.


fix(): overall packages update

This fixes potential vulnerabilities and also good to do once-in-a-while
Also replaced babel-eslint with @babel/eslint-parser because babel-eslint has been deprecated for a long time

:tada: This PR is included in version 1.5.10 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


update workflows to work with new and updated folder structure

backend tests check still failing because new folder structure is not yet in main branch.
will merge with 4/5 successful checks.


Aggregation metrics

Small changes to @mircopolo's metrics branch #846

Remove unused variable to fix pep8
Refactor a few lines in get_aggregation_query
Make doc_type required
Don't alert on "None" returned for the metric

I have added some a first stab at documentation to my original PR.

Two last changes on my original PR, have added a new Rule type Percentage Match based on the filters bucket aggregation, and one fix for the match timestamp to use the bucket key when the  date_histogram is used instead of the query start time (More accurate)

I have pushed fairly comprehensive set of tests for the new rule types and updated the query segmenting test as well.
I think all that remains fully uncovered are the sync_window_offset and allow_buffer_time_overlap settings, I might need some resident expertise to assist here.

I need to do anything else on my original PR (or here)?

@mircopolo Nope. Sorry for being super slow with getting these reviewed and pushed. I've got time today I'm dedicating to this though!

No problem at all, I can see you are kept very busy :+1:
I think I have noticed one final mistake on my part, in unwrap_interval_buckets where I use the bucket_key as the time stamp I should have really added the bucket_interval so that the alert time is the end of the sub window, not the beginning, which would be consistent with other rule implementations.
            # Use bucket key here instead of start_time for more accurate match timestamp             self.check_matches(ts_to_dt(interval_data['key_as_string']), query_key, interval_data)

I think there is a mistake in elastalert.py at line 409 it's self.rules['timestamp_field'] not self.rule['timestamp_field'] :
    def get_hits_aggregation(self, rule, starttime, endtime, index, query_key, term_size=None):
        rule_filter = copy.copy(rule['filter'])
        base_query = self.get_query(rule_filter, starttime, endtime, timestamp_field=rule['timestamp_field'], sort=False, to_ts_func=rule['dt_to_ts'], five=self.is_five())
        if term_size is None:
            term_size = rule.get('terms_size', 50)
        query = self.get_aggregation_query(base_query, rule, query_key, term_size, self.rule['timestamp_field'])

I get this error:
ERROR:root:Traceback (most recent call last):
  File "/tech/cloud/elastAlert/elastalert/elastalert/elastalert.py", line 902, in run_all_rules
    num_matches = self.run_rule(rule, endtime, self.starttime)
  File "/tech/cloud/elastAlert/elastalert/elastalert/elastalert.py", line 674, in run_rule
    self.run_query(rule, tmp_endtime, endtime)
  File "/tech/cloud/elastAlert/elastalert/elastalert/elastalert.py", line 474, in run_query
    data = self.get_hits_aggregation(rule, start, end, index, rule.get('query_key', None))
  File "/tech/cloud/elastAlert/elastalert/elastalert/elastalert.py", line 409, in get_hits_aggregation
    query = self.get_aggregation_query(base_query, rule, query_key, term_size, self.rule['timestamp_field'])
AttributeError: ElastAlerter instance has no attribute 'rule'

Thanks @mza97, fixed in https://github.com/Yelp/elastalert/commit/bf631b80a3e4db3414cacec5c1823f4a8abf4be5

I have just noticed that when I reverted and recommitted the Percentage Match Rule I seem to have omitted the rule documentation that was present on the original commit. It was originally in here. Could this be reinstated this to the docs on master.
https://github.com/Yelp/elastalert/pull/913/commits/8a58805934d5b8fd999d02a17b18ca74e3f1194c


Invalid conjur version number

We should validate Conjur version is 4 or 5 rather than looking at the arbitrary image name to validate version. Currently this section is failing because our image name is cyberark/dap:11.2.1.
https://github.com/cyberark/kubernetes-conjur-deploy/blob/045f3c2496585f0dee4044876225d031f288cb36/0_check_dependencies.sh#L22-L28

Note - we could probably update this to check that if the image tag is 4.x, that the CONJUR_VERSION is 4, and that it's 5 otherwise

@andrewcopeland thanks for flagging this - we've updated the project to support the v5 API by default now, so that CONJUR_VERSION defaults to 5, and we've moved v4 support to a branch and removed it from the main project.


feat(Core): Extract the header logic to core

Extracted the header modification generic logic to core.

The PR https://github.com/googleapis/google-cloud-php/pull/6052 makes these changes obsolete, thus closing this PR.


Mobile: betslip button at bottom shouldn't show up if empty

@phoebemirman still seeing it. has it not merged yet?

looks right for me. maybe try a refresh?


Tick.inPeriod() bug?

I have a lot of recorded ticks (price + volume), and sometimes a few have exactly the same timestamp.
For this example, I want all my ticks to be collected within a TA4J Tick instance with period 1 second.
I use this code to round off my timestamp to nearest second:
new_ts =  ((ts + 500) / 1000) * 1000;
I keep track of lastTick, to see if this new tick is on the same second as last, and if so, I call addTrade instead.
if (lastTick != null && lastTick.inPeriod(d)) {
		lastTick.addTrade(tradeAmount, tradePrice);
		return lastTick;
	}
	else {
    	Tick newTick = new Tick(Period.seconds(1), d);
    	lastTick = newTick;
            newTick.addTrade(tradeAmount, tradePrice);
            series.addTick(newTick);
	return newTick;
	}

Now the problem:
inPeriod() returns false if endTime is equal or less to the given timestamp. Since all ticks within a second will end up having the same ts, inPeriod() must return true.
My fix was:
public boolean inPeriod(DateTime timestamp) {
    return timestamp != null
            && !timestamp.isBefore(beginTime)
            /* bugfix that works for me: endTime is included in period! */
            &&  (timestamp.isEqual(endTime) || timestamp.isBefore(endTime));
}

Is this the wrong way to "fix" the problem that will cause unwanted sideeffects later? Is it better if I "clean" my data and concatenate all ticks to a single tick or....what? Please guide me.

Hi and thank you for your interest! :)
I don't understand well what you are trying to do. You seems to correctly feed your series with the trades you get, but one second seems pretty short for your ticks.
A few explanations (just in case):
Each "tick" represents the opening, closing, high and low prices of a stock for a time period. Thus you can run your strategy on each tick (instead of each trade the market executes, which may involves problems in illiquid markets due to the lack of trades). Normally, all the ticks in your series should have the same duration.
Therefore:

If you want to illustrate the movement of price over a long-term horizon, you may want to build monthly (or weekly) charts. The time period of your ticks will be the month (or the week).
Common traders/investors will use daily time series. These are handy for common analysis. In that configuration you will have one-day long ticks.
Day traders also use intraday charts. It allows to be very reactive when the time period of each tick comes to 5 or 2 minutes.

Smaller ticks are theoritically possible but I don't know if it would be relevant (because it would become too sensitive to extrema). Also, instead you may consider executing your strategy on each trade provided by your exchange.
Anyway, for now with ta4j:

you can't work directly on raw market trades, you have to build your ticks;
you can't do HFT (the lib is not designed for that).

About your work:
I don't understand why you want to round your timestamp to the nearest second. Why do you want to loose information?
Your fix may work but it allows something I want to avoid: you might "aggregate" a trade in two (or more) different ticks, which is a perfect non-sense for me (but I am open to anything).

If I may jump in ... I am a forex trader and tend to scalp. The lowest time frame I go down to is 1 minute, which my broker provides, which is great already, and this is really good enough my needs.
Maybe you want to build your timeseries on the lowest time timeframe that your broker provides and Then react to the latest tick to react to the market.
So you build the timeseries on the lowest timeframe provided , stream the latest ticks and react on them. Once the timeframe ends, you rebuild the timeseries and restart.
At this stage ta4j does the job for me.

OK I feel that we are missing the point here. Let's ignore the round-to-nearest-second and the fact that we DO have sub-second ticks and also the fact that we get many, many ticks per day.   We're talking (in a Carl Sagan voice) "billionzz-and-billionzz" of rows in the database.
Whether the time period is ms, sek, minutes, days, years or centuries shouldn't matter btw. Every time period has an open&close and high&low, as well as total volume. This is what I understood your Tick class was handling, by having an addTrade() method for all trades that occur within the Tick period.
Anyhow, we are using TA för intraday trading, and I was testing your framework on our data, by doing a quick hack of the TradingBotOnMovingTimeSeries.java example. It immediately gave exceptions on "Cannot add a tick with end time <= to series end time".
I read trades from the database for a whole day (symbol, timestamp, price and qty) and feed it into the program. In this particular testcase I had about 34000 trades. A few of them has the same timestamp. Whether the TimeSeries period is 1 second, 10 minutes or 1 hour shouldn't matter, right? For the sake of argument, I created Ticks with period 1 minute and 1 hour too, but got exactly the same exceptions.
Since it occurred every time we had two trades with the same timestamp, so I started to see if I could find a way around the problem.
The Tick class computes beginTime as the given time (stored in endTime) minus the period. Doesn't this complicate matters when you add trades sequentially? Wouldn't it be a lot easier if you took the given time as beginTime and set endTime to beginTime + period? Since you normally have trades in time-order with increasing timestamp? How else can I test that "this timestamp" belongs to the "current Tick" or if I should create a new Tick? I must have misunderstood something here.
Thats why I had the "lastTick.inPeriod(d)" call, to see if my tick was to be added to the current Tick object, else I would create a new Tick for the next timeperiod. Also, the rounding was just trying to avoid the problem with the endTime/beginTime I mentioned earlier.
So, to clearify, we are not talking HFT and we are talking intraday TA (of course in coop with other proprietary analysis). I just want to be able to feed in my data with duplicate timestamps.

Ok. Sorry for the misunderstanding; I can't know a priori what's your level of skills when you first come. Also your explanations about timestamp rounding and one-second time periods made me think you were starting the wrong way. It's clearer now.
So:

The Tick class computes beginTime as the given time (stored in endTime) minus the period. Doesn't this complicate matters when you add trades sequentially? Wouldn't it be a lot easier if you took the given time as beginTime and set endTime to beginTime + period?

It's a matter of point of view: Yes, maybe you are right when you add trades sequentially. But a common use case is to feed a series with tick data directly, in which case the given time is always the end time.

Is this the wrong way to "fix" the problem that will cause unwanted sideeffects later?

Your fix makes the time bounds of the tick to be both inclusive. It comes with the problem that you may have a timestamp for which inPeriod() would return true for 2 consecutive ticks (and I wanted to avoid that).
It opens the door to unwanted sideeffects and makes me think that something goes wrong (even if I can't hit the nail on the head).
For now I don't see the relationship between the inPeriod() return value and the fact that some of your trades have the same timestamp. In my mind if inPeriod() return false you have to create a new tick. All subsequent records with the same timestamp should be added to this new tick (inPeriod() would return true for them).
Check out this example: some trades have the same timestamp. See if it helps. If not, would you mind posting a SSCCE of a 3 trades case? Thus I could try to debug it and see if there is a bug.


Error deleting Athena workgroup

When deleting the CloudFormation stack, the following error is raised when deleting the Athena workgroup:
Resource handler returned message: "Invalid request provided: WorkGroup ... is not empty (Service: Athena, Status Code: 400, Request ID: ...)" (RequestToken: 1..., HandlerErrorCode: InvalidRequest)

RecursiveDeleteOption to true.
I also propose that we add PublishCloudWatchMetricsEnabled: true
Source:
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html

PR Merged

PR merged


Testnet Feedback

I have tried and completed several tasks that must be tried in the Soramitsu Testnet. I have swapped several Klay tokens in normal swaps or Multi-hops
/ Expert mode, then I added Liquidity and tried to deposit and withdraw Lp. then I go to farming / earn and stake, add, remove/withdraw Lp tokens and harvest earn tokens. everything went well and smoothly without any bugs or errors that I found in the Soramitsu Testnet. Keep growing Soramitsu and hopefully Soramitsu will be even better in the future
Address Testnet: 0xB778527eD387b19f1b31876ED286c0C0Ca9d7b16

@Hodlnft Thank you for your testing and we hope to continue delivering high quality features and improvements!


[trace] Add default span attributes

This adds default span attributes that can be submitted when registering
the exporter. All submitted attributes are set on every span when it's
being exported.
refs #707

Where do you see the benefit in keeping it out of the core API? Besides the already mentioned code duplication in all exporters, it would come with a risk that certain exporters might choose not to implement the feature which would result in different feature sets on different exporters, wouldn't it?

I agree with @rakyll we should not pollute the core APIs.
One reason being that the tracing backends they end up in have different informational requirements and can use different attribute keys for the same information payload.
We're operating in a brown field situation where being idiomatic to the exported ecosystems has value. This also helps an instrumentation consumer switching from one tracing backend to the other see that they have to explicitly take care of migrating the set default attributes to the new exporter (and potentially alter them to be idiomatic to this new platform).

gotcha.
I added another PR census-ecosystem/opencensus-go-exporter-stackdriver#2 which implements what you suggested in the stackdriver exporter.
But it's a bit cumbersome to use, since I can't really work with the trace.Attribute type there because in order to add them to the SpanData.Attributes I need access to the key and value which are both private fields of the trace.Attribute.
In the end it works out fine but it just looks different from using normal trace.Attributes

Replaced by: census-ecosystem/opencensus-go-exporter-stackdriver#2


Mute flaky test immutable-client-ip

What type of PR is this?
/kind cleanup
What this PR does / why we need it:
Let's mute this test while @alenkacz works on a fix in https://github.com/kudobuilder/kudo/pull/602.
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

NONE

I think we have a strong enough idea of how to fix this and the fix is close enough that we don't need this.


Restyle footer

Old

New

@nate-double-u could you please take a look?
(I plan some design improvements in the future)


RPI4 - Hang while interrupt

Hi everyone!
I am trying to count events with an interrupt on GPIO17 (or whatever) with pull-up internal and a high level of 90ms.
I am using a callback, it is working but there is no "real-time" in processing the interrupt function :( it is possible to wait 10 second before my callback is called!
Can someone explain that to me ?
Thanks a lot!

Please post a snippet of your code that demonstrates your issue.

Hi,
I have the problem in Python and C..
Maybe something wrong with the Pigpio Daemon ?!
#!/usr/bin/env python

# monitor.py
# 2016-09-17
# Public Domain

# monitor.py          # monitor all GPIO
# monitor.py 23 24 25 # monitor GPIO 23, 24, and 25

import sys
import time
import pigpio

last = [None]*32
cb = []

def cbf(GPIO, level, tick):
   if last[GPIO] is not None:
      diff = pigpio.tickDiff(last[GPIO], tick)
      if GPIO == 17:
        print("G={} l={} d={}".format(GPIO, level, diff))
   last[GPIO] = tick

pi = pigpio.pi()

if not pi.connected:
   exit()

if len(sys.argv) == 1:
   G = range(0, 32)
else:
   G = []
   for a in sys.argv[1:]:
      G.append(int(a))

for g in G:
   cb.append(pi.callback(g, pigpio.EITHER_EDGE, cbf))

try:
   while True:
      time.sleep(60)
except KeyboardInterrupt:
   print("\nTidying up")
   for c in cb:
      c.cancel()

pi.stop()

This code seems reasonable.  What is the stimulus on gpio 17?  By default, gpio 17 will be an input with a pull down.

The stimulus is an open-circuit with a S0 impulse output from a power counter.
90ms activated for 1Wh.

Have you verified that you are receiving valid levels on that input?
To verify pigpio is behaving properly I suggest disconnecting the external stimulus then making the pin an output and write to it during the while loop.

Yes, the pigpio is working but it is like hanging during the stimulus.
When I do the contact at the hand, it is working but heracticly (many, too much times).
I tested this program too :
#!/usr/bin/env python

import struct
import time

control = open("/dev/pigpio", "w")
result  = open("/dev/pigout", "r")

control.write("no\n")      # All pipe commands must be ended with a line feed.
control.flush()            # Force message through the pipe.
h = int(result.readline()) # Read result (handle).

if h >= 0: # Valid notification handle received.

   notify = open("/dev/pigpio{}".format(h)) # Read notifications from here.

   # Specify gpios for which notifications are required.
   control.write("nb {} {}\n".format(h, -1)) # -1 is all gpios.
   control.flush()                           # Force message through the pipe.
   result.readline()                         # Discard result.

   start = time.time()

   while (time.time() - start) < 30: # Run for a few seconds.

      msg = notify.read(12) # Read next notification.

      if len(msg) == 12:

         S, fl, t, v = struct.unpack("HHII", msg)

         # Ignore sequence number and flags for quick test.

         print("Tick={:010d} gpios={:032b}".format(t, v))

   control.write("nc {}\n".format(h)) # Close notification.
   control.flush()                    # Force message through the pipe.
   result.readline()                  # Discard result.

   notify.close()

result.close()
control.close()

When I do the contact at the hand, it is working but heracticly (many, too much times).

This is normal and called “contact bounce”.  It can bounce for tens if not hundreds of times and never the same way.

If you get more level changes than can be handled by Python they will all be queued up by the daemon.  It can take seconds for the changes to arrive at Python once the system becomes less busy.
Are you expecting tens of thousands of level changes per second?

I think I will be far from 10k!
With this datasheet :
https://www.cartelectronic.fr/documentation/DRS155-B.pdf
1 impulse = 1 Wh = 1 blink led
And I can count the led blinkink, like 1 per second!

What is the SO device in the diagram?  Is it something to convert the 60v to 3.3v?

What is the SO device in the diagram? Is it something to convert the 60v to 3.3v?

S0-outputs are a simple interface that is fairly common in Germany. I could not find an English-language data sheet for S0 in general or the DRS155-B inparticular, but the principle is simple: while the signal is being asserted, a switch or equivalent connects the two pins via a 1k resistor. The whole thing is free of potential as the switch must be electrically separate from the rest of the device (e.g., via an optocoupler).
The S0-interface must be driven by the remote (RPi in this case) and can handle up to 27 V at 27 mA.
Oh, and the S0 output has to be free of bouncing.

Thanks @felixkasza.
But it seems to me that a bit more signal conditioning is required.  As I understand it, the RPi is the input, not the controller.  A 4-20mA current loop would over-voltage the internal pull up/down resistor with an impedance of approximately 50K ohms.   Maybe I'm still not getting it.

Oh, and the S0 output has to be free of bouncing.

@alternadom, you will need to debounce the input.

Actually, an optocoupler by itself would be an ideal interface element:  Direct conversion to 3.3V with no mechanical switch bounce.

I apologise for having been unclear.
According to the EN 62053-31 standard, the S0 interface requires the external side, in this case, the RPi, to produce enough voltage (up to the max of 27 V) to maintain a current loop at all times. The sensor just determines, assuming the external side is able to source enough juice, whether to let flow a current of less than 2 mA (LOW) or more than 10 mA (high). A current so low as to be undetectable is considered a failure indicator, like broken wires and such.
In "classical" applications the loop was controlled on the sensor side by an opto-transistor that allowed more or less current to flow depending on whether a pre-existing LED was on or off; the current would travel to the external side and if there was enoug current (HIGH), it would turn on a LED which turned on an opto-transistor. A discrete opto-coupler pair, if you will.
@alternadom – Regarding debouncing, the DRS155-B doesn't need that, but the mechanical switch you used to simulate the DRS certainly does.
More to the point: Your RPi is (a) not a constant-current source, much less a controllable one. On a good day, a GPIO pin on the RPi might source 50 mA at 3.3 V, but the S0 current-loop interface is comparable to a series-equivalent resistor of 7.5k (assuming 15 V input and 2 mA) in the LOW/OFF state respectively 1.5k in the HIGH/ON state (assuming 15 V and 10 mA).
 Buy a current-loop-to-TTL (also called current-loop to voltage) converter, or hack one together. It should only take a double op-amp (and maybe even just one? It's been a while since the TTY33KSR.)

Actually, an optocoupler by itself would be an ideal interface element: Direct conversion to 3.3V with no mechanical switch bounce.

But we would still need the driver for the current loop. :(

This is SO complicated, lol.

It gets worse. There are umpteen 20mA-to-RS232 converters on the market, more than there are stars in the sky, more than there are grains of sand at the beach. Because why? Because RS232 comes with a power supply! ±9 V minimum, ±15 V ideally, ±24 V if someone was generous. :)
In this case we would need:

a current-loop signal detector

simplest case: a LED and a photo transistor
regrettably, BJTs amplify current, not voltage
a module like this one: https://www.amazon.de/dp/B07QXWH3C5

and a voltage source, 10–15 V
an A/D converter or a little ESP32 or 'duino sidecar

That begins to sound like a bit of a project. Maybe go with the RS232 converter? No, the Pi cannot (directly) handle RS232 signal levels :(

@alternadom – here, this is what you want: Your counter has a little LED in a round hole near the display. Depending on the model, this is a visible-light LED or an infrared LED.
Go though and get an optotransistor that reacts to light or IR, depending. Wire the optotransistor as follows: GPIO -> optotransistor -> Ground.
Configure the GPIO you are using as input, with a pull-up to high. (Not an output: We want to know when the transistor has connected out GPIO to GND, and we want to make that easy.)
Tell pigpio to notify you an the falling edge of the signal and to ignore further falling edges for, oh, 0.2 seconds,
Tape your optotransoistor over the little hole with the LED in the DRS155 and start counting.
Note: 0.2 seconds debounce time is fine. In a home, you are unlikely to have more than 40 A @ 240 V max. That gives us 9600 VAm which means an impulse every 0.375 seconds. If you want something better, condition the signal from the optotransistor with a Schmitt-trigger.
Summary: One optotransistor, a few yards of cheap wire, a strip of Sellotape (sticky tape). No current-limiting current source, no weird supply voltages, nothing.

Hi,
At the beginning, I started working on this :
https://electrorun.blogspot.com/2016/10/monitorer-la-consommation-denergie-avec.html
Very simple, i thought it would be easy but the behavior of the interrupt function was not really nice.
All the interrupt calls was treated at the same time!
And I wanted to monitor my power usage with precision..
I will be damn to use the LED and not the S0 output (which is made for that kind of usage!).
Is the debounce can be configured on the pigpiod ? The service is working correctly but if i stop it and try a manual run like :
sudo pigpiod -s 2 -b 200 -f
My RPi is frozen and I need to cut the power 😢
Any advice to configure pigpiod better than in my link above ?

I saw plenty of articles that just connect the S0 lines to the Pi and claim that it works. And for every one of those articles, I found three forum discussions because it didn't work.
You cannot connect an S0 interface to a Pi GPIO (3.3 V, 16 mA in theory) and expect it to work.
What you are seeing on the meter output is not bouncing; it is because the Pi does not deliver enough power to make a clear distinction betwen HIGH and LOW. The signal current goes into the forbidden area between 2 mA and 10 mA. The solutions that work, like the Volkszaehler, all use dedicated interface hardware co convert between current loop signals and 3.3 V levels.
Hook up a scope, check for yourself!

@alternadom, the blog you linked shows a different part number - DDS5188.   Let's assume the output of this device is a dry contact, ie, not the current loop mentioned above, and that you have wired it as described in the blog.  What is missing from your code is setting the pull-up resistor on GPIO 17.  You would need to add the following:
pi.set_mode(17, pigpio.INPUT)  # don't rely on default pin mode.
pi.set_pull_up_down(17, pigpio.PUD_UP) # set the pull up resistor

If there is noise (bounce) coming from the dry contact you can experiment with
pi.set_glitch_filter(17, steady)  # steady is microseconds to filter

The service is working correctly but if i stop it and try a manual run like :
sudo pigpiod -s 2 -b 200 -f
My RPi is frozen and I need to cut the power

This is not expected.  Can you provide some detail about how your service is configured and how to stopped it?

No change with the 3 lines..
For the pigpiod, this is my /etc/init.d/pigpiod file :
#!/bin/sh
# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
    set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
fi
### BEGIN INIT INFO
# Provides:          pigpiod
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.  This example start a
#                    single forking daemon capable of writing a pid
#                    file.  To get other behavoirs, implemend
#                    do_start(), do_stop() or other functions to
#                    override the defaults in /lib/init/init-d-script.
### END INIT INFO

# Author: NikoRun ( nikorun @ airtune . info )

DESC="Start PiGpiod Daemon"
DAEMON=/usr/local/bin/pigpiod

What OS are you running?
What version is pigpio?
What is return value of ‘pigs hwver’
Where did this service script come from?

I did a bit more research.  There are two types of SO interfaces:  The type you are using requires an external DC voltage be supplied - usually 5 - 27VDC.  The other type, as used in the blog, is a "potential free contact" type.  You should consider the advise offered by @felixkasza.
I will continue to assist you with the service shutdown hang that you mention.

https://wiki.volkszaehler.org/hardware/controllers/raspberry_pi_erweiterung_klein
https://wiki.volkszaehler.org/hardware/controllers/raspberry_pi_erweiterung_mit_schaltausgaengen_rev.1
I have two of the second up and running. Working like a charm. Sorry, links only available in German.
Also a ready to buy product is available:
https://busware.de/tiki-index.php?page=SD0

Issue is not related to pigpio.


Baal: Update SummonBaal event to indicate with summon function was used

Details
We need a way to flag if a baal was summoned from function summonBaal vs. function summonBaalAndSafe
They both use this event:
    event SummonBaal(
        address indexed baal,
        address indexed loot,
        address indexed shares,
        address safe
    );

Can we add a 5th param to indicate if the safe was summoned with the baal or if it already existed?

@skuhlmann @dekanbro after todays discussion around the gnosis plugin - should this field be considered for responding with multiple places a Baal can be summoned?
gnosis app vs summonBaal vs summonBaalAndSafe?
might make the bool irrelavent.. could probably come later

@skuhlmann @dekanbro after todays discussion around the gnosis plugin - should this field be considered for responding with multiple places a Baal can be summoned?
gnosis app vs summonBaal vs summonBaalAndSafe?
might make the bool irrelavent.. could probably come later

Well this field really just indicates that the safe existed before the dao was summoned - we can't exactly tell where the ball was summoned from. In the future I think we'll support summoning with an existing safe in our UI too.
The only thing we can really differentiate here is whether the summonBaal or summonBaalAndSafe function was called, so bool seems good to me.

Summoning Baal factories on network: Goerli
Account address: 0xC00e02e6539376465190B2cA4759Bff6FE5f5B81
Account balance: 0.29748152283185087 ETH
lootSingleton 0x0De84DCAc3B2d52581120059ee9723FDDecCB044
sharesSingleton 0x3109AeD0fD9777cEFb24dBa5eb5030987bd9E3F3
baalSingleton 0x69b442eb55714A0B144134AED015517394Ed1871
Transaction Hash: 0x62906ba23728bda0a1a0ffcca412371772448bac200497030462da615fc04598
Factory Contract Address: 0x0C5fd8AAdF995e11E5Ac1CD72139Ee4fd72cDeFC


How to stop text inclusion in Anki card?

I want to add an Anki card, and then have some sort of closing operator, so that the text I write after it is not part of the Anki card. How can I do this? Is it possible with this software?

Hi @sophyphile sorry for the delayed response. I will have to try and add that as currently it’s not possible.
do you have an example to show which may help me fix this?

Hi @jasonwilliams I have an a similar issue:
I have a case here:
# Topic header
Description of topic, notes etc.

first card:

## card 1
front1

%

back 1

# Topic header 2
Description of topic, notes etc.

## Card 2

front

%

back

Here the topic header 2 is included in the first card, which is naturally not the goal. One option would be to add a stop token (e.g. ## or \n\n)

Hmm yeah I wonder if stopping on a H1 would help? It already stops if it sees another h2 I believe. I’m open to ideas

Stopping on H1 would help in my case. But adding an optional stopping token using regex would also be an option.
Another option would be to change the regex for detecting the card to instead of detecting the start of the card (##) use the regex to find the entire card e.g. the regex ^##((.|\n)*)## would match from ## to the next ##. If you don't want to include the ## then (?<=##)((.|\n)*?)(?=##)should also work.

It seems it might be relevant to also remove ignore comment i.e. <!-- markdown comment -->.

https://github.com/jasonwilliams/anki/issues/10#issuecomment-678828123 Uses <!— Card —> maybe that’s an options

Sure. However, do believe that a field with a regex for extracting the card whether it be HTML comments or using another syntax would be ideal. This would allow the user to customize to their needs

Yes we should offer an option for that. I’m just thinking of the most reasonable default

I Think HTML comment is a poor default though as it is also a comment thus I would expect it to ignore it in markdown documents potentially one of these from the anki integration with obsidian: https://github.com/Pseudonium/Obsidian_to_Anki


DELETE /pins/{ref} throws unpin root hash: deletion of pin failed

Context
Tested on v1.8.0 and v1.8.1. Mac arm
Summary
unpinning fails for content uploaded with encrypt header from /bytes endpoint.
Expected behavior
Return 200
Steps to reproduce the behavior:

upload to bee directly /bytes post request with pin and encrypt header
try to unpin the reference (from step 1) /pinning/{ref} delete request
See error

{
    "message": "unpin root hash: deletion of pin failed",
    "code": 500
}

You might want to turn on debug level logging and do the delete again.  IIRC, the unpinning action has additional details that log showing more about what the issue might be.

Same issue here.
"time"="2022-09-30 11:52:41.061787" "level"="debug" "logger"="node/api" "msg"="unpin root hash: delete pin failed" "chunk_address"="703d3400e5cc9a6ba3f620a729315fe768dbe4347b4ace29aa8a986ccbe87878" "error"="3 errors occurred:\n\t* traversal iteration failed\n\t* get pin index: get value: leveldb: not found\n\t* unable to unpin the chunk for leaf \"fa514a85dda0b609b7cd14bae8d4276bddd9c7bed7011f56b1d8fd0a2fa4491d\" of root \"703d3400e5cc9a6ba3f620a729315fe768dbe4347b4ace29aa8a986ccbe87878\": get pin index: get value: leveldb: not found\n\n"
"time"="2022-09-30 11:52:41.061868" "level"="error" "logger"="node/api" "msg"="unpin root hash: delete pin failed"

Can you verify if this issue persists post 1.17.2. We can reopen this if it does. Closing it for now.


Broadcast Array Error

I'm getting a very strange broadcast array error for a model and cost function I know is correct (when I test it in NumPy).
Code required to reproduce the error
import numpy as np
import cvxpy as cvx
from scipy import stats

print(cvx.__version__)

def vec_to_array(vector: np.ndarray) -> np.ndarray:
    return vector.reshape((len(vector), 1))

def check_properties(obj, name=''):
    print(name, f'DCP {obj.is_dcp()}', f'Convexity {obj.is_convex()}')

def y_hat(beta_0, theta_0, beta, theta, x, z):  # Confirmed DCP and Convex
    n = x.shape[0]
    p = x.shape[1]
    k = z.shape[1]
    print(f'n {n}, p {p}, k {k}')

    intercepts = beta_0 + (z @ theta_0)

    shared_model = x @ beta

    pliables = np.zeros(n)
    for j_i in range(p):
        x_j = np.tile(vec_to_array(x[:, j_i]), (1, k))
        # sum_term = cvx.matmul((x_j * z), theta[j_i, :])
        sum_term = (x_j * z) @ theta[j_i, :]
        pliables = pliables + sum_term

    output = intercepts + shared_model + pliables
    return output

def j(beta_0, theta_0, beta, theta, x, y, z, lam):
    n = x.shape[0]
    p = x.shape[1]

    mse = (0.5 * n) * cvx.norm(y - y_hat(beta_0, theta_0, beta, theta, x, z), p=2) ** 2

    beta_matrix = cvx.reshape(beta, (p, 1))
    penalty_1 = cvx.sum(cvx.norm(cvx.hstack([beta_matrix, theta]), p=2, axis=1))
    penalty_2 = cvx.sum(cvx.norm(theta, p=2, axis=1))
    penalty_3 = cvx.sum(cvx.norm(theta, p=1))

    penalty_a = lam * (penalty_1 + penalty_2)
    penalty_b = lam * penalty_3

    loss = mse + penalty_a + penalty_b
    check_properties(loss, 'loss')
    return loss

if __name__ == '__main__':
    # Fake data
    n = 100
    p = 50
    k = 4

    beta_true = np.zeros(p)
    beta_true[:4] = [2, -2, 2, 2]
    print(beta_true)

    data = stats.norm().rvs(size=(n, p))

    beta_true = np.zeros(p)
    beta_true[:4] = [2, -2, 2, 2]

    z_true = stats.bernoulli(p=0.5).rvs(size=(n, k))
    print(z_true.shape)

    coefs = z_true.copy()
    coefs[:, 0] = beta_true[0]
    coefs[:, 1] = beta_true[1]
    coefs[:, 2] = beta_true[2] + 2 * z_true[:, 0]
    coefs[:, 3] = beta_true[3] * (1 - 2 * z_true[:, 1])
    print(coefs.shape)

    target = np.diag(data[:, :4] @ coefs.T) + stats.norm().rvs(n)
    print(target.shape)

    # Setup
    # Parameters
    beta_0 = cvx.Variable(1)
    theta_0 = cvx.Variable(k)
    beta = cvx.Variable(p)
    theta = cvx.Variable((p, k))

    print('beta_0', beta_0.shape)
    print('theta_0', theta_0.shape)
    print('beta', beta.shape)
    print('theta', theta.shape)
    print('=' * 20)

    # Hyperparameters
    lam = cvx.Parameter(nonneg=True, value=3.0)
    # lam.value = 3.0

    problem = cvx.Problem(
        cvx.Minimize(j(beta_0, theta_0, beta, theta, data, target, z_true, lam))
    )
    soln = problem.solve()

Calling the helper methods shows that the problem is both convex and follows DCP.
I get this falling error that I'm very sure much be a bug or error
Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm 2018.2.4\helpers\pydev\pydevd.py", line 1741, in <module>
    main()
  File "C:\Program Files\JetBrains\PyCharm 2018.2.4\helpers\pydev\pydevd.py", line 1735, in main
    globals = debugger.run(setup['file'], None, None, is_module)
  File "C:\Program Files\JetBrains\PyCharm 2018.2.4\helpers\pydev\pydevd.py", line 1135, in run
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "C:\Program Files\JetBrains\PyCharm 2018.2.4\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "C:/Users/antho/PycharmProjects/rosey/plasso.py", line 109, in <module>
    soln = problem.solve()
  File "C:\Users\antho\PycharmProjects\rosey\venv\lib\site-packages\cvxpy\problems\problem.py", line 268, in solve
    return solve_func(self, *args, **kwargs)
  File "C:\Users\antho\PycharmProjects\rosey\venv\lib\site-packages\cvxpy\problems\problem.py", line 381, in _solve
    data, inverse_data = self._solving_chain.apply(self)
  File "C:\Users\antho\PycharmProjects\rosey\venv\lib\site-packages\cvxpy\reductions\chain.py", line 65, in apply
    problem, inv = r.apply(problem)
  File "C:\Users\antho\PycharmProjects\rosey\venv\lib\site-packages\cvxpy\reductions\solvers\conic_solvers\ecos_conif.py", line 109, in apply
    problem, neq_constr, ECOS.EXP_CONE_ORDER)
  File "C:\Users\antho\PycharmProjects\rosey\venv\lib\site-packages\cvxpy\reductions\solvers\conic_solvers\conic_solver.py", line 261, in group_coeff_offset
    coeff, offset = self.format_constr(problem, cons, exp_cone_order)
  File "C:\Users\antho\PycharmProjects\rosey\venv\lib\site-packages\cvxpy\reductions\solvers\conic_solvers\conic_solver.py", line 228, in format_constr
    offset[i*gap+1:(i+1)*gap] = offsets[1][i::gap-1]
ValueError: could not broadcast input array from shape (50) into shape (5)

I don't even know where an arrayof shape (5) could have come in, that's how confused I am 😢

``
File "/home/aburabazam/PycharmProjects/xsim/xsim/Node.py", line 172, in propagate_mpc
self.problem.solve(verbose=False, solver=cvx.ECOS)
File "/home/aburabazam/anaconda3/envs/heating/lib/python3.8/site-packages/cvxpy/problems/problem.py", line 481, in solve
return solve_func(self, *args, **kwargs)
File "/home/aburabazam/anaconda3/envs/heating/lib/python3.8/site-packages/cvxpy/problems/problem.py", line 1008, in _solve
data, solving_chain, inverse_data = self.get_problem_data(
File "/home/aburabazam/anaconda3/envs/heating/lib/python3.8/site-packages/cvxpy/problems/problem.py", line 639, in get_problem_data
data, solver_inverse_data = solving_chain.solver.apply(
File "/home/aburabazam/anaconda3/envs/heating/lib/python3.8/site-packages/cvxpy/reductions/solvers/conic_solvers/ecos_conif.py", line 113, in apply
c, d, A, b = problem.apply_parameters()
File "/home/aburabazam/anaconda3/envs/heating/lib/python3.8/site-packages/cvxpy/reductions/dcp2cone/cone_matrix_stuffing.py", line 188, in apply_parameters
param_vec = canonInterface.get_parameter_vector(
File "/home/aburabazam/anaconda3/envs/heating/lib/python3.8/site-packages/cvxpy/cvxcore/python/canonInterface.py", line 59, in get_parameter_vector
param_vec[col:col + size] = value
ValueError: could not broadcast input array from shape (93,) into shape (96,)
``
I also got this error after my Simulation with the MPC-Propagation was simulated for over 50 000 timesteps without problems.
The code to reproduce the error is quite heavy and works on parallel cores so I cannot provide it :(

 File "/home/aburabazam/PycharmProjects/xsim/xsim/Node.py", line 172, in propagate_mpc     self.problem.solve(verbose=False, solver=cvx.ECOS)   File "/home/aburabazam/anaconda3/envs/heating/lib/python3.8/site-packages/cvxpy/problems/problem.py", line 481, in solve     return solve_func(self, *args, **kwargs)   File "/home/aburabazam/anaconda3/envs/heating/lib/python3.8/site-packages/cvxpy/problems/problem.py", line 1008, in _solve     data, solving_chain, inverse_data = self.get_problem_data(   File "/home/aburabazam/anaconda3/envs/heating/lib/python3.8/site-packages/cvxpy/problems/problem.py", line 639, in get_problem_data     data, solver_inverse_data = solving_chain.solver.apply(   File "/home/aburabazam/anaconda3/envs/heating/lib/python3.8/site-packages/cvxpy/reductions/solvers/conic_solvers/ecos_conif.py", line 113, in apply     c, d, A, b = problem.apply_parameters()   File "/home/aburabazam/anaconda3/envs/heating/lib/python3.8/site-packages/cvxpy/reductions/dcp2cone/cone_matrix_stuffing.py", line 188, in apply_parameters     param_vec = canonInterface.get_parameter_vector(   File "/home/aburabazam/anaconda3/envs/heating/lib/python3.8/site-packages/cvxpy/cvxcore/python/canonInterface.py", line 59, in get_parameter_vector     param_vec[col:col + size] = value ValueError: could not broadcast input array from shape (93,) into shape (96,)
Got this error after simulation with a MPC and 50 000 timesteps simulated without an error. Code is quite heavy because it runs with MPI and threading on different cores, but i think its the same Issue like above.

What version of cvxpy are you using?


fix: #748 - Fixing the Forest Client Number at Summary Page

Clearing the formData for forestClientNumber fixes the issue where the Summary page was displaying it for a reviewer role after selecting a submitter role.

Hi Nick, also in the summary page, we didn't display the role, should we display?

Hi Nick, let's pull from the latest main


chore: bump versions of deps

Codecov Report

Merging #455 into develop will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop     #455   +/-   ##
========================================
  Coverage    91.62%   91.62%
========================================
  Files           37       37
  Lines         1289     1289
  Branches       277      277
========================================
  Hits          1181     1181
  Misses         107      107
  Partials         1        1


Concurrent tests on pack

https://github.com/mirage/irmin/pull/1008 contains concurrent test for irmin-pack, so I'm closing this.


ENH: multidimensional y0 ODE integration

Is your feature request related to a problem? Please describe.
I'm trying to simulate a three-body problem using odeint, but it doesn't support multidimensional ys, forcing me to write a custom function to do it.
Describe the solution you'd like.
No response
Describe alternatives you've considered.
No response
Additional context (e.g. screenshots, GIFs)
No response

@j-bowhay I figured it would be simple enough to accomodate. Would you be willing to review that or, if you'd prefer, would you like to take it over and me review?

@j-bowhay I figured it would be simple enough to accomodate. Would you be willing to review that or, if you'd prefer, would you like to take it over and me review?
Oops this asks for odeint, but I did solve_ivp. Since solve_ivp is the new interface, I think that's the only one I'd add to.

Happy to review but too busy with uni to implement atm. Agree about only touching solve_ivp

FYI: odeintw.  Also available on PyPI (https://pypi.org/project/odeintw/), so it can be installed with pip.


WIP: Allow custom Post Init scripts to be run

This commit depends on https://github.com/zalando/patroni/pull/1631, which now has been merged,
however it is part of Patroni 2.0. We therefore should take care not to merge this one before we have Patroni 2.0 support
in the Docker image
Addresses GitHub issue #102

Patroni 2.0 is nowadays part of the Docker Image so we can move forward with this one.
Needs a bit more testing after accepting all the suggestions, but there's nothing stopping us anymore.

Patroni 2.0 is nowadays part of the Docker Image so we can move forward with this one.
Needs a bit more testing after accepting all the suggestions, but there's nothing stopping us anymore.

Redacted output after doing some incremental changes:
2021-01-12 14:21:01 - post_init - Decompress and apply post init sql [ /etc/timescaledb/post_init.d/compressed.sql.gz ]
  ?column?
------------
 compressed
(1 row)
2021-01-12 14:21:02 - post_init - Apply post init sql [ /etc/timescaledb/post_init.d/plain.sql ]
   ?column?
--------------
 uncompressed
(1 row)
2021-01-12 14:21:04 - post_init - Call post init script [ /etc/timescaledb/post_init.d/shell_test.sh ]
Test, args: dbname=postgres user=postgres host=/var/run/postgresql port=5432

Redacted output after doing some incremental changes:
2021-01-12 14:21:01 - post_init - Decompress and apply post init sql [ /etc/timescaledb/post_init.d/compressed.sql.gz ]
  ?column?
------------
 compressed
(1 row)
2021-01-12 14:21:02 - post_init - Apply post init sql [ /etc/timescaledb/post_init.d/plain.sql ]
   ?column?
--------------
 uncompressed
(1 row)
2021-01-12 14:21:04 - post_init - Call post init script [ /etc/timescaledb/post_init.d/shell_test.sh ]
Test, args: dbname=postgres user=postgres host=/var/run/postgresql port=5432


Two ValueError: invalid literal for int() with base 10: 'False', could not convert string to float: 'False'

Hi all,
I'm trying to run this comparison command:
truvari -b NA12878.sorted.vcf -c sorted.vcf.gz --pctsim=0 -o compare_dir/
But it gives me this error:
Traceback (most recent call last):
  File "/anaconda3/lib/python3.7/site-packages/vcf/parser.py", line 390, in _parse_info
    val = self._map(int, vals)
  File "/anaconda3/lib/python3.7/site-packages/vcf/parser.py", line 360, in _map
    for x in iterable]
  File "/anaconda3/lib/python3.7/site-packages/vcf/parser.py", line 360, in <listcomp>
    for x in iterable]
ValueError: invalid literal for int() with base 10: 'False'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/anaconda3/bin/truvari", line 1047, in <module>
    run(sys.argv[1:])
  File "/anaconda3/bin/truvari", line 742, in run
    for entry in regions.iterate(vcf_base):
  File "/anaconda3/bin/truvari", line 545, in iterate
    for entry in vcf_file:
  File "/anaconda3/lib/python3.7/site-packages/vcf/parser.py", line 572, in __next__
    info = self._parse_info(row[7])
  File "/anaconda3/lib/python3.7/site-packages/vcf/parser.py", line 394, in _parse_info
    val = self._map(float, vals)
  File "/anaconda3/lib/python3.7/site-packages/vcf/parser.py", line 360, in _map
    for x in iterable]
  File "/anaconda3/lib/python3.7/site-packages/vcf/parser.py", line 360, in <listcomp>
    for x in iterable]
ValueError: could not convert string to float: 'False'

Any help/suggest to solve that please?

Please check the INFO field headers in your vcfs. One of your entries has INFOTAG=False, but your header defines ##INFO=<ID=INFOTAG, Type=Integer.... Where INFOTAG is one of your info fields.

What I found is some entries have X=False, but X not exist in the header!
So, I filter those entries and it works now!
Thanks for the help


h3

Hi i was looking in google and they use h3
Is there way to enable nginx proxy manager to use latest h3: here is example:
events {
worker_connections  1024;
}
http {
server {
# Enable QUIC and HTTP/3.
listen 443 quic reuseport;
    # Enable HTTP/2 (optional).
    listen 443 ssl http2;

    ssl_certificate      cert.crt;
    ssl_certificate_key  cert.key;

    # Enable all TLS versions (TLSv1.3 is required for QUIC).
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;

    # Add Alt-Svc header to negotiate HTTP/3.
    add_header alt-svc 'h3-23=":443"; ma=86400';
}

}

see #1550


docs(i18n): New Crowdin updates

:tada: This PR is included in version 4.5.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Maintainership

Hi @philippeowagner,
Let me start by expressing my gratitude towards the hours you and other contributors have sunk into this project.
With that in mind, it would be sad to see this library fade away. Looking that the current state of the repository, it might be time to consider putting this project under new maintainership, to fuel the project with new enthusiasm.
Since you are a @jazzband member yourself, that would certainly be an option. If you prefer a corporate or individual maintainer, that could also be arranged.
Maybe you find the time to share your thoughts.
Best,
Joe

The project really lacks care. It is very disappointing to prepare changes and wait for an answer for several years without receiving it...
https://github.com/arteria/django-hijack/pull/197

The project really lacks care. It is very disappointing to prepare changes and wait for an answer for several years without receiving it...
https://github.com/arteria/django-hijack/pull/197

FYI, I just reached out to @philippeowagner via email. I am confident this will yield a response. Let's give a little more time before resorting to a hard fork.

FYI, I just reached out to @philippeowagner via email. I am confident this will yield a response. Let's give a little more time before resorting to a hard fork.

Hi all,
We will find together a solution to get django-hijack forward.
The sources of django-hijack and django-hijack-admin will be moved to https://github.com/django-hijack as soon as possible.
I will call for maintainer once sources have moved.

Hi all,
We will find together a solution to get django-hijack forward.
The sources of django-hijack and django-hijack-admin will be moved to https://github.com/django-hijack as soon as possible.
I will call for maintainer once sources have moved.

Nice to hear that!

Nice to hear that!

Any news?

Any news?

Who'd like to join the party?  You @codingjoe and you @Mogost ?
How are we going to organize this?
Any suggestions and experiences from other projects?
I'm talking about this repo and  django-hijack/django-hijack-admin by the way.

Who'd like to join the party?  You @codingjoe and you @Mogost ?
How are we going to organize this?
Any suggestions and experiences from other projects?
I'm talking about this repo and  django-hijack/django-hijack-admin by the way.

I am happy to take part.
I think we need automation for deployments and tests, which I did in #197.
May be interesting for @kedlav

I am happy to take part.
I think we need automation for deployments and tests, which I did in #197.
May be interesting for @kedlav

Hi @philippeowagner, yes I'd be honored to help.
I guess it would be good to set some ground rules, like mandatory reviews and a release process as well as version support.
Those would be my suggestions:
Releases
I agree with @Mogost to automate this. However, #197 includes to many unrelated changes. I have a very tiny GitHub Action script that enables automated releases on PyPi. I'd be delighted to contribute that.
Besides that, semver is the way to go and every contribution should be released. Changes may be bundled into a single release if they were merged at the same day. Essentially, if you are done reviewing and merging changes for the day, release your changes. With the automation I proposed this would only mean to create a GibHub release with some notes and you're done.
Reviews
One should not merge their own code without a peer review. Every member may merge and release new PiPy versions.
Version support
Updating to new Python and Django versions has been getting easier latetly. It is usually sufficient to support the last two versions. Legacy application may simply jump to an older version of django-hijack.
Django: Latest stable and latest LTS (e.g. 3.1 & 2.2)
Python: Last two releases (e.g. 3.8 & 3.9)

Hi @philippeowagner, yes I'd be honored to help.
I guess it would be good to set some ground rules, like mandatory reviews and a release process as well as version support.
Those would be my suggestions:
Releases
I agree with @Mogost to automate this. However, #197 includes to many unrelated changes. I have a very tiny GitHub Action script that enables automated releases on PyPi. I'd be delighted to contribute that.
Besides that, semver is the way to go and every contribution should be released. Changes may be bundled into a single release if they were merged at the same day. Essentially, if you are done reviewing and merging changes for the day, release your changes. With the automation I proposed this would only mean to create a GibHub release with some notes and you're done.
Reviews
One should not merge their own code without a peer review. Every member may merge and release new PiPy versions.
Version support
Updating to new Python and Django versions has been getting easier latetly. It is usually sufficient to support the last two versions. Legacy application may simply jump to an older version of django-hijack.
Django: Latest stable and latest LTS (e.g. 3.1 & 2.2)
Python: Last two releases (e.g. 3.8 & 3.9)

@codingjoe Agree about GH actions. If I made these changes today, it would be done this way.
In #197 I removed django-compat dependency, now this dependency hinders rather than helps.

@codingjoe Agree about GH actions. If I made these changes today, it would be done this way.
In #197 I removed django-compat dependency, now this dependency hinders rather than helps.

@Mogost great. I proposed a GH action here #210
I'd also love to review the changes in #197, but it would be much simpler if you could split your changes across multiple pull requests.

@Mogost great. I proposed a GH action here #210
I'd also love to review the changes in #197, but it would be much simpler if you could split your changes across multiple pull requests.

@philippeowagner I'd also love to do triage on all open issues. There is a lot that simply needs an explanation and could be closed.
Splitting admin support into a separate package seems ambitious. We should test and document support with and without the admin, but I believe it might be more convenient to have this feature be part of this package. Be it only as a contrib and not core behavior.

@philippeowagner I'd also love to do triage on all open issues. There is a lot that simply needs an explanation and could be closed.
Splitting admin support into a separate package seems ambitious. We should test and document support with and without the admin, but I believe it might be more convenient to have this feature be part of this package. Be it only as a contrib and not core behavior.

Ahoy pirates and welcome aboard!
Please welcome our new Captains @codingjoe and Quartermaster @Mogost – or vice versa.
I'm happy to hand over the steering wheel, but we (arteria GmbH) will remain on board as owners for the time being.
If any Sailing Master, Gunner, Powder Monkey, .. wants to join the journey, I'm happy to add more crew members with write access to this organization.
Have fun maneuvering this ship safely into the next harbor.

Ahoy pirates and welcome aboard!
Please welcome our new Captains @codingjoe and Quartermaster @Mogost – or vice versa.
I'm happy to hand over the steering wheel, but we (arteria GmbH) will remain on board as owners for the time being.
If any Sailing Master, Gunner, Powder Monkey, .. wants to join the journey, I'm happy to add more crew members with write access to this organization.
Have fun maneuvering this ship safely into the next harbor.

PS: See https://github.com/django-hijack/django-hijack/issues/114 why does django-hijack-admin exist. The version numbers should be keeps in sync due to a .deb package. I think @stylesen asked for it.
PPS: Johannes, please email me in case you need my attention. Thank you!

PS: See https://github.com/django-hijack/django-hijack/issues/114 why does django-hijack-admin exist. The version numbers should be keeps in sync due to a .deb package. I think @stylesen asked for it.
PPS: Johannes, please email me in case you need my attention. Thank you!

I would like to participate as well.

I would like to participate as well.

The more, the merrier! @utapyngo you can get started on triage and review right away or submit patches.

The more, the merrier! @utapyngo you can get started on triage and review right away or submit patches.

I will close this issue now, since we can create new releases.

I will close this issue now, since we can create new releases.


mkdocs: add mkdocs-macros-plugin for embedding yaml files

/cc @robscott
You can then use the following snippet to load a YAML file in any page with the following diff:
+```
+{% include 'backendpolicy.yaml' %}
+```

This is awesome, thanks!
/lgtm
/approve

/lgtm


Update Torlock

@DoumanAsh Update Torlock, the Name is displayed wrong. Also update the icon and the wiki:
https://github.com/qbittorrent/qBittorrent/wiki/Unofficial-search-plugins
Thanks.

Can you please share example?

Python 3. See the Name column vs https://www.torlock.com/all/torrents/batman.html

Ok got it. Will fix that.

Done.
I would prefer to re-write it, but i was too lazy so i just fixed name displaying :)

Update the icon if you have time.

Now it detects the names fine, but try to search, for exemple, "russian", "spanish", etc... the first results, in order by seeders, will have a "full version", "high definition", and "latest top release" which will redirect to a dangerous site. Thanks for your dedication anyway, guys.

@Pireo
Well it is torlock bad results...
I'll think about filtering it later. But anyway Torlock is just bad.

@Pireo
Filtering of malicious is added in scope of https://github.com/DoumanAsh/qBittorrent-Search-Plugins/commit/5c29834f7f268acff53de7222f1bcbd200e21c0c

The only strange thing, if I search "movie" it doesn't find anything, just to inform you, but the plugin is definitely ok now, Thanks.


Not updated on Arduino Library Manager

Arduino Library Manager downloads versión 1.0 which uses Connect and Emit instead of Attach and Fire.
Should I use version 1.0 from the Library Manager or the GitHub's 1.1 version?

Hey Alex, thanks for the info, I wasn't aware that the version manager was out of date. I'll update it when I get the chance but in the meantime go with v1.1

Sorry for the super slow response, I just made a release for v1.1 so this should be resolved now!


Fixes on several reps YAML files

Have done some testing with dogooderapp and have fixed representative files that failed to get through.
Fixes included:

State options (some were empty)
ABBREV => FULL for state in some files
Removal of state/city/zip5/zip4 on the second form step when it's not already required (usually after the 1st step)
Some outdated forms i.e. when enews popup is not applicable anymore

Thanks for posting a PR! Unfortunately, I'm not sure we can merge this in its current state.
For example, the changes that have been made to H001052 would take this YAML from successful to failing. Address is indeed required, but it has been made non-required. We generally indicate we'd like a response when asked, but that has been removed. The success condition has been turned into an empty string, which means it is not actually checking for a real success message, and thus anything would pass even if the form did not submit.
In S001156, the replacements of empty options with states, the form actually does not have these state options. David Scott just has an option menu that's simply Georgia. So I suppose we could remove the entire select, but adding in options that don't exist in the DOM on the form tends to cause errors.
I haven't looked through the rest.
Can you look through your changes and make updates to ensure they're successfully filling out forms? Since folks pull directly from this repo for their YAMLs we have fairly stringent standards for making changes.

Sure, will re-check them again keeping your notes in mind.

On another note:
U000031 - gives a mobile version when a robot visits, so there is no way to retract the DOM elements (there are none for mobile version).
See screenshot by the robot:

Is there any way to prevent that?
Also in some forms I think the script automatically does a find on selector which does not do much. For instance:
H001063

find:

   - selector: "h1"

     value: "Email Me- Thank You"

It does so before the success check so does not really check therefore is not needed or am I wrong?

Re: mobile, I don't have issues with upton with our implementation, so it may be your robot.
Re: find, yes, that's necessary. Sometimes forms submit via javascript or other means, so sometimes they take a while with lots of content, so find is necessary to wait for the success page to show up before we check the success condition.

Hi. I have reviewed the changes and it should be all good now.
Just FYI:
members/B001275.yaml
The original form on Bucshon's website has empty " " for values in the TOPIC select, yet the previous YAML file had values in the " ". I'm not sure what to do there.
For most of them removing state/city/zip5&4 when they were not required on the second step took them to success for me.
Let me know if there are any more issues with this PR.

Still some issues I'm afraid. Some examples:
B001275, the change in state abbreviations to full isn't correct -- abbreviations are the values that are used in fact, though the labels are full.
In B001275, generally we don't add in non required fields, or at least we're slowly trying to stop that. So adding in address2 probably shouldn't happen. But what you did with the select seems right. Weird markup!
H001052, zip4 is probably not always required, but probably required sometimes to put the user in the right district (and thus allow access to the form). So this should be marked as true.
Haven't gone all the way through yet, but just some examples.

Ok.
True on State abbrev, the full state in the select threw me off. Fixed.
Have put ZIP4 back to required:true
I have removed the non-required fields where possible in my fixes.
Left the phone fields in for M000702 even if not required, since there is a required one and they are all copied in (I presume).

Great, getting there!
In M000702, probably don't need to select twice the topic -- you do it at the beginning, but then don't need to do it again.
S001156, watch your indents
I think that might be it!

I've fixed those on Friday, just to let you know.

great, merging these over -- would be good to confirm these are all tested and working in production when you can!


Implement touch-able slide-in menu for mobile device form factors

Maybe by using this:
http://jtrussell.github.io/angular-snap.js/

Done.


Bloom filter

I think this is a complete filter, including compatibility tests iwht java (that are not yet implemented in java!).
I'm look for feedback on how I handled wrapping. It feels a little too parallel to java in some ways, with wrap() vs writable_wrap(), which I'm not sure is a good idea. The other issue is taht the former returns a const sketch, but counting the number of bits set may require modifying the filter. It should compute the number if it's in read-only mode so I could potentially add a const version of that method -- or just make it not update the internal state.
Anyway, I'm fairly sure there are missed const values and other changes needed. But feel free to start with big picture design first and then move to details once we're happy with the overall structure.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>1
Details

452 of 500 (90.4%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.3%) to 98.714%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

filters/include/bloom_filter_builder_impl.hpp
42
44
95.45%

filters/include/bloom_filter_impl.hpp
317
332
95.48%

common/include/xxhash64.h
44
75
58.67%

Totals

Change from base Build<PHONE_NUMBER>0:
-0.3%

Covered Lines:
16883

Relevant Lines:
17103

💛  - Coveralls

I think I have addressed all the comments now


feature, custom default pattern

Would it be possible to add a pattern to match under cursor as default, or multiples.
Say filename:# for example to open a filename and jump to line
similar to
open_file_at_cursor

I assume you want to use this on build output to quickly navigate to errors, right?

maybe, backtrace jumping would be handy but i was actually using this with a catalog file that traces source code references, like notes todos, and definition usage.

Interesting. I hadn't considered that use case. I'm open to contributions, as I'm otherwise busy atm.


Feature/test suite

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@fb29d43). Click here to learn what that means.
The diff coverage is n/a.

@@           Coverage Diff            @@
##             main       #14   +/-   ##
========================================
  Coverage        ?   100.00%
========================================
  Files           ?        18
  Lines           ?       442
  Branches        ?         0
========================================
  Hits            ?       442
  Misses          ?         0
  Partials        ?         0

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more


will Petite  provide value injection like spring @Value

will Petite  provide value injection like spring @Value
public class SomeClass{
    @Value("${db.mysql.url}")
    private String dbUrl;

  ...
}

Hi,
as far as i know (and short reading of petite doc) there is no support of "spring value annotation".
workaround :
public class SomeClass{
    @PetiteInject
    IPropertyService propertyService;  //  your own small service for getting properties

    private String dbUrl;  // as u wanted to use a (system) property

   // initialization method
   @PetiteInitMethod
   public void init() {
        dbUrl = propertyService.getProperty("db.mysql.url");
   }
}

Maybe this workaround may help you...
HTH,
Sascha

We may think about this as a new feature for petite.

Hey @jscrapy !
if db.mysql.url is a property, then - tada - this already exists in Jodd!
See: https://jodd.org/petite/parameters.html
If you use just Petite, then basically you just need to load properties into the Petite with defineParameters(Map) and pass your Properties object and that's it. No special annotation needed. Or you pass the Jodd-Props instead (https://jodd.org/props/index.html). The only thing here is that the name must match the bean names.
If you use Joy, then just put the joy.props in the root of the resources. It will be loaded automatically.
However, if db.mysql.url comes from the other bean (named db) then we do not have that.
Here is what we gonna do:

have auto-injection as a flag.
Add annotation for value.

My question to you (and @moh-sushi :)

Would it make sense that @PetiteValue read values not only from properties, but from other beans? Basically to simulate what @moh-sushi wrote 2 notes up?

Actually, the next commit solves it :)))

Thanks ^_*

Would it make sense that @PetiteValue read values not only from properties, but from other beans?

I think , @PetiteValue with reading from props is sufficient.
Thank, @igr !


enhance: Allow symfony 6

Can you please rebase to unblock this one?

@yceruto Rebased :)

Thank you @chapterjason


Add DateService Tests

Parent Issue #306

Open for now.
the issue is mocking static methods. and mocking events which are past, live and upcoming with mock now time.

Actually, just create events of different time and check the return string from the static methods

Can I take this up @mejariamol ?

@iamareebjamal yeah sure.


devel - several fixes

[this issue is here to document my struggles, and to provide a tracker for my progress]

gcm support is minimal. reimplement all other commands.
figure out diffie hellman error where rekey results in different keys
make rekey actually do something in the new system (the new DH key is never used)
trackdown error where the commands output is delayed one cycle
create client class to hold all variables, and to clean up the code. May integrate/be replaced by multiclient support

Most of this is fixed now, I made the rekey problems into a separate issue tracker. Fixing rekey and file upload/download will be a priority.


Chain filtering

Is there a way to introduce chained logic so that there can be sub filters? For example based on the sample code below the filter Filter = "Level2List_Id=101, Level2List_Level3List_Property1>=3.0" might not do what is expected.
It currently finds Level2 items with Id=101 and Level3 items with Property1>=3.0 - but they do not have to be the same item.
Sometimes we need to chain filters so they apply to a single item, eg filter where Level2 item is BOTH Id=101 and also has Level3 items with Property1>=3.0.
For example, something like this
AND:
(Level2List_Id=101, Level2List_Level3List_Property1>=3.0) , Id < 10
OR:
(Level2List_Id=101| Level2List_Level3List_Property1>=3.0) , Id < 10
The example below returns 1 item as both conditions are met but with chained logic should return zero items as there is no data with Level2.Id == 101 and also Level3 Property1 >= 3.0.
        static void Main(string[] args)
        {
            Level1 level1 = new Level1()
            {
                Id = 1,
                Name = "Level1Name",
                Level2List = new List<Level2>()
                {
                    new Level2() { Id = 101, Name = "Level2_1", Level3List = new List<Level3>() { new Level3() { Property1 = 2.0, Property2 = 100.0, Level = 0 } } },
                    new Level2() { Id = 102, Name = "Level2_2", Level3List = new List<Level3>() { new Level3() { Property1 = 3.0, Property2 = 200.0, Level = 1 } } },
                    new Level2() { Id = 103, Name = "Level2_3", Level3List = new List<Level3>() { new Level3() { Property1 = 4.0, Property2 = 300.0, Level = 2 } } }
                }
            };

            Level1[] array = new Level1[1];
            array[0] = level1;
            var ds = array.AsQueryable();

            // Multi Nested Property
            var gq2 = new GridifyQuery { Filter = "Level2List_Id=101, Level2List_Level3List_Property1>=3.0" };
            var gm2 = new GridifyMapper<Level1>()
            .GenerateMappings()
            .AddMap("Level2List_Level3List_Property1", l1 => l1.Level2List.SelectMany(l2 => l2.Level3List).Select(l3 => l3.Property1))
            .AddMap("Level2List_Id", l1 => l1.Level2List.Select(l3 => l3.Id));

            var actual2 = ds.AsQueryable()
               .ApplyFiltering(gq2, gm2)
               .ToList();
        }

It may be required to actually specify what property (object or collection) is passed in the chain for sub-filtering.

Hi, this feature is available in version 2.0.0-beta.3.
If you use parenthesis around any nested collection that has the same type, Gridify doesn't create separated queries.
I've tested many scenarios like this and it's working fine, but because of the massive complexity of this feature, it is possible to find some use-cases that I did not cover yet.
I appreciate any feedback again.
thank you for your contribution.

This is excellent! I've just tested briefly and it works really well.