Investigate tree-shaking compatibility

As reported by @loreanvictor in #1, tree shaking might not be compatible with exporting $ and _ that share context variable with the computed fn.
Needs investigation.

I had a quick look (I was on the train so couldn't do more atm). From a first glance on an actual project bundled with webpack (default config, no particular optimization), rxjs-autorun seems to add ~12KB to the bundle size (rxjs itself adds about the same, nothing in particular imported from it). Inspecting the bundle (manually, not with a tool) indicates that no unused code is imported from rxjs though, so I am not sure if this is directly related to tree-shaking or not.
For comparison, I used callbag-subject and callbag-expr, which together contributed ~1.5KB to the bundle. I will create an equivalent package for rxjs-autorun mirroring implementation of callbag-expr, investigate its contribution to bundle size, and see where are the deficits. Note that I am not sure by any means whether this bundle size increase is due to problematic tree-shaking or is it due to other factors.

Thanks for looking into this! I haven't yet debugged tree-shaking and am not sure how to do it properly.
I suspect, that RxJS imports are already optimized since we directly import the operators/constructors that are well-separated. So the tree-shaking won't be that obvious here.
If you're right and we aren't side-effect free, then I'm lying in package.json — something to be properly set after the investigation (I accidentally copy-pasted that with project set-up 🙂). Also, maybe setting it to false would mark only this package out of tree-shaking and still let others to be stripped.
Should be relatively easy to check our tree-shaking: just import only the autorun, shake it, and see what code is left in the bundle (do we have _$, context and computed?)


UP-4518 Add Lifecycle to portlet definition, rev portlet definition

https://issues.jasig.org/browse/UP-4518
Add support for optional lifecycle element.  In a portlet definition, you can add a lifecycle element:
Bumped portlet-definition to 4.3.  Added optional lifecycle element:
    <lifecycle>
        <approved>2015-11-06T12:48:19.717-07:00</approved>
        <published user="admin">2015-11-06T12:48:19.717-07:00</published>
        <expiration user="admin">2015-12-16T12:48:19.717-07:00</expiration>
    </lifecycle>

lifecycle with no children: created
user is optional, defaults to system
expiration can be in the past (expired) or future (scheduled expiration)
prior elements not necessary; e.g. can specify just published and approved will be defaulted appropriately

Love the feature.  Love the thoughtful, graceful implementation of defaults.  Love that there's test coverage over some of this. Love that there's an upgrade path and that the new entity element is eminently optional.
I'd quibble with some of the implementation details. The private methods look procedural where a more object-oriented approach might be more amenable to test coverage.
:+1:.


coudn't load my own .obj file

Hi , I've put my own obj file into assets folder and try to load it but couldnt work, is there a guide on how to do it?

Can you email the obj file to me?

Can you email the obj file to me?

thank you , i've sent to your email

Hey @zesage,
I have similar issue I can't load any model from poly.google this one for example https://poly.google.com/view/0ao4tHskrbu
I used the cube example as starting point and I was able to load the .obj file without materials (it renders as a white blank model) but when I add .mtl and a .png in folder it doesn't work (no errors but can't see the model). I'll be very grateful if you look at this issue, thanks a lot!

fix in the last commit babfc628db9dae9138b5971aaf46a2bd45d2b44d
example code:
  scene.camera.position.setFrom(Vector3(0, 0, 10));
  scene.light.position.setFrom(Vector3(0, 10, 10));
  scene.textureBlendMode = BlendMode.hardLight;
  scene.world.add(Object(scale: Vector3(5.0, 5.0, 5.0), lighting: true, fileName: 'assets/chr_01.obj'));

Hey @zesage, thanks a lot for the help, it works!
Does the lib support more than 1 light source? I've noticed ambient propriety for example but I'm not sure how it works.

Only support 1 light source

Hey @zesage. For some reason, I can’t load my 3D model into the project. Can you please see what the problem is if I throw off obj + mtl?
Writes the error "out of memory".

Hey @zesage. For some reason, I can’t load my 3D model into the project. Can you please see what the problem is if I throw off obj + mtl?
Writes the error "out of memory".

Please email me the obj files.

Hello, I cannot load my obj file either. There are no errors in the console but the screen is just blank. Can you please see what the problem is?

Good afternoon, I've followed the example source code and I've added assets extention .obj and .mtl from the instructions. Then I got blank with the error
Unhandled Exception: Exception: FormatException: Bad UTF-8 encoding 0x8d (at offset 62)
I've changed the .obj files to the others file and still the same.
How can I fix it?

Try to import the obj to Blender, then checked the Triangulate Faces when re-export to obj.  And this widget can only render a small model, if the model has too many vertices, use Blender's Decimate tool to reduce the faces and vertices.  If it still not work, email me the obj files.

Hey, I tried loading a .obj file. It throws E/flutter (23098): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: Unable to load asset: error when compiling for Android. However, it works properly for the web.

Hello
I've put my own obj file into assets folder and try to load it but couldnt work, is there a guide on how to do it?


Use Nox as the build tool instead of Make

Purpose

Replaces make with nox (more details in issue)

Changes

[x]  copy/pasta the noxfile infra from fidesctl
[x] refactor Dockerfile
[x] add GitPython and nox to the dev-requirements.txt
[x] remake all (most, some were judged to be redundant or broken) make targets as nox targets
[x] clean up mypy section of the pyproject.toml a bit

Checklist

[x] Update CHANGELOG.md file

[x] Merge in main so the most recent CHANGELOG.md file is being appended to
[x] Add description within the Unreleased section in an appropriate category. Add a new category from the list at the top of the file if the needed one isn't already there.
[x] Add a link to this PR at the end of the description with the PR number as the text. example: #1

[ ] Applicable documentation updated (guides, quickstart, postman collections, tutorial, fidesdemo, database diagram.
If docs updated (select one):

[ ] documentation complete, or draft/outline provided (tag docs-team to complete/review on this branch)
[ ] documentation issue created (tag docs-team to complete issue separately)

[ ] Good unit test/integration test coverage
[ ] This PR contains a DB migration. If checked, the reviewer should confirm with the author that the down_revision correctly references the previous migration before merging
[ ] The Run Unsafe PR Checks label has been applied, and checks have passed, if this PR touches any external services

Ticket
Fixes #439
Summary
This PR gets nox up and running for fidesops. It would be too big (and dangerous) of a change to implement nox while at the same time removing the Makefile completely so that will be done in another PR.

pytest_integration is taking a long time to run and is failing, not sure if this is a resource issue on my machine or not, will do more testing

got everything working, was an issue with nox -s teardown

tests seem flaky, should be good to go as it didn't touch much outside of the new noxfiles

@ThomasLaPiana I pulled the latest updates to see if they changed anything and now when I run any nox command I get an error. I tried removing my .nox cache and I'm still getting the error.
Traceback (most recent call last):
  File "/Users/paul/development/python/fidesops/.venv/bin/nox", line 8, in <module>
    sys.exit(main())
  File "/Users/paul/development/python/fidesops/.venv/lib/python3.9/site-packages/nox/__main__.py", line 45, in main
    exit_code = workflow.execute(
  File "/Users/paul/development/python/fidesops/.venv/lib/python3.9/site-packages/nox/workflow.py", line 49, in execute
    return_value = function_(*args, global_config=global_config)
  File "/Users/paul/development/python/fidesops/.venv/lib/python3.9/site-packages/nox/tasks.py", line 103, in load_nox_module
    return _load_and_exec_nox_module(global_config)
  File "/Users/paul/development/python/fidesops/.venv/lib/python3.9/site-packages/nox/tasks.py", line 65, in _load_and_exec_nox_module
    loader.exec_module(module)  # type: ignore[attr-defined]
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/Users/paul/development/python/fidesops/noxfile.py", line 10, in <module>
    from dev_nox import *
  File "/Users/paul/development/python/fidesops/noxfiles/dev_nox.py", line 5, in <module>
    from noxfiles.constants_nox import ANALYTICS_OPT_OUT
ModuleNotFoundError: No module named 'noxfiles'

@sanders41 I most definitely broke it 😮💨 pushing up a fix now

@sanders41 alright I've updated the .dockerignore, lmk if the commands work now! I think that was it


Negative values for R2.lik

Hi Yuxin,
I'd like to get to the bottom of this strange occurrence, although I suspect that, like you also kind of thought, is related to this issue. Just thinking this through, let me know where I drop the ball:

the response traits where you observed this initially are X21.1_PopulationDensity_n_per_km2 and AVGFoodConsumption, which are continuous-valued, hence we use phylolm (not phyloglm)
if the problem has to do with low phylogenetic signal (as @arives and @atanzap are speculating) we have to get some measure of that signal from the model estimation function
the doc for the phylolm function states that the $optpar field of the result object contains "the optimized value of the phylogenetic correlation parameter (alpha, lambda, kappa, delta or rate)."
however, this value is null when you run a BM model (correct?), so you have to do a separate estimation where the model is lambda
I guess it would mean that when lambda is close to zero we get those negative values.

To test this, we need a simple case, where everything (data, tree, analysis) is set up within a block of code as big as this issue such that others can run it. For example as a gist. We then wanna check:

with @lamho86 if it is correct behavior that we don't get an estimate for alpha
with @arives if the lambda thing makes sense

In summary: please organize your code such that there is a small, reproducible example of this behavior.


Disabling + Renabling GutterColor, changing color scheme

When GutterColor is disabled and renabled again, the color scheme on all opened tabs is changed to Monokai. Tried running Fix Color Scheme but nothing changed.
ST3 Build 3065, Windows 7 64bit.

I faced the same problem. Clicking "Preferences>Color Scheme Forget for View" and then selecting my favorite color scheme fixed the problem.


Graphical frontend

Would be nice to have a graphical interface for Attic.

Since Attic already supports mounting an archive as a FUSE filesystem, I think a GUI for configuring backups would be the most useful.
Personally, I think Attic is simple, efficient and powerful enough as it is now, but having something like this or even a configuration GUI wouldn't be bad either.


[SPARK-2213][SQL] Sort Merge Join

This PR adds MergeJoin operator to Spark SQL. The semantics of MergeJoin operator is similar to Hive's Sort merge bucket join.
MergeJoin operator relies on SortBasedShuffle to create partitions that sorted by the join key. In each partition, we merge the two child iterators. The tricky part in merge step is handling duplicate join keys. To handle duplicate keys, we use a buffer to store all matching elements in right iterator for a certain join key. The buffer is used for generating join tuples when the join key of the next left element is the same as the current join key.
MergeJoin reduces extra memory consumption, in the current implementation, MergeJoin only needs memory that can hold elements of the key that has the most duplicates in right iterator.
For query optimization,  we may resolve to MergeJoin when both relations are large and neither of the two can fit in memory. Currently, this heuristic is not added to optimizer. I would appreciate if you can add comments on how to resolve to MergeJoin in optimizer.
Currently, MergeJoin only supports inner join. However, it can be extended to support outer join. Will handle outer join in separate PRs.

Hi, this looks great! Is there a reason why sort based join is not in spark core, only in spark SQL?

@justinuang i think you are interesting in SPARK-5763.


Madal not respond to KeyboardAvoidingView

Modal window is not keyboard aware.
I'm using
However, the modal does not seem to respond to it.

will let you know when fixed

To make the React Native Paper Modal window keyboard-aware, you can use the react-native-keyboard-aware-scroll-view library in combination with the KeyboardAvoidingView
<KeyboardAwareScrollView
            contentContainerStyle={{ flex: 1 }}
            extraScrollHeight={Platform.select({ ios: 20, android: 20 })}
            enableOnAndroid
          >


Unable to assign topics to repos

Gitea version (or commit ref): 1.5.1
Git version: 2.18.0
Operating system: Windows 10
Database (use [x]):

[ ] PostgreSQL
[x] MySQL
[ ] MSSQL
[ ] SQLite

Can you reproduce the bug at https://try.gitea.io:

[ ] Yes (provide example URL)
[ ] No
[ ] Not relevant

Log gist:

Description
I am unable to assign any topic to any repo. I get the current message
Topics must start with a letter or number, can include hyphens(-) and must be no more than 35 characters long
Screenshots

@Xdeposh are you able to add the topic "test"? and just that? In addition to the help text in your screenshot, topics can't have spaces.

Well, I am just stupid.. Yes, without space I can add topics. Thanks for the help :D


Microsoft Python Server excess memory usage

Environment data

VS Code version: 1.30 Insiders
Extension version (available under the Extensions sidebar): 2018.11.0
OS and version: Windows 10, 64, 1803
Python version (& distribution if applicable, e.g. Anaconda): Anaconda (Python 3.7)
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): N/A
Relevant/affected Python packages and their versions: N/A

Expected behaviour
Reasonable memory usage after prolonged use in a small project (~10 files of <1k lines each) with constant changes in all files.
Actual behaviour
Memory use by the server Microsoft.Python.LanguageServer.exe specifically reached ~10GB after around 16 hours since the most recent restart.
Update:
After force killing the server, it climbs up again pretty fast to around 5GB. That's within ~20
Steps to reproduce:

Have a small-to-moderate project with several local packages (nested modules).
Constantly edit the files.
There might appear several, consistent "Reloading modules" messages in the "Output" panel.
After around 20 mins of use of a VSCode instance, this should happen.

Logs
Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)
Starting Microsoft Python language server.
Microsoft Python Language Server version <IP_ADDRESS>
Initializing for C:\ProgramData\Anaconda3\python.exe
Microsoft Python Language Server version <IP_ADDRESS>
Initializing for C:\ProgramData\Anaconda3\python.exe
Microsoft Python Language Server version <IP_ADDRESS>
Initializing for C:\ProgramData\Anaconda3\python.exe
Microsoft Python Language Server version <IP_ADDRESS>
Initializing for C:\ProgramData\Anaconda3\python.exe
Reloading modules...
Reloading modules...
done.
Reloading modules...
done.
done.
Reloading modules...
done.
Reloading modules...
Reloading modules...
done.
done.
Reloading modules...
done.
[and on and on]

Output from Console under the Developer Tools panel (toggle Developer Tools on under Help)
N/A

Duplicate of Microsoft/python-language-server#479.


Update font family to Google Sans

Feature Description
Throughout the editor (and dashboard and design system if applicable), update the font family to Google Sans rather than Roboto.

Do not alter or remove anything below. The following sections will be managed by moderators only.
Acceptance Criteria

Implementation Brief

GIF categories still appearing as Roboto:

Image categories appearing as Roboto:

@csossi - the fonts for the pills are getting updated here: https://github.com/google/web-stories-wp/issues/7052
Max and Samuel split that work to avoid merge conflicts. I'm sorry for not communicating that to you.

Verified in QA - thanks for the update, @BrittanyIRL


SKP-AKI install

Hey I'm trying to install to SPT-AKI 2.0 RC1 but the installer finishes when I launch the game it doesn't activate or none of the keybinds work, nor is the tainer.ini file in the Documents folder.
also when I try to compile myself with VS 2019 it doesn't compile
Main error
Severity	Code	Description	Project	File	Line	Suppression State
Error	CS1705	Assembly 'Assembly-CSharp' with identity 'Assembly-CSharp, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null' uses 'Newtonsoft.Json, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' which has a higher version than referenced assembly 'Newtonsoft.Json' with identity 'Newtonsoft.Json, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'	NLog.EFT.Trainer	C:\Battlestate Games\AKI 2.0\EscapeFromTarkov-Trainer-master\CSC	1	Active
Warning
Severity	Code	Description	Project	File	Line	Suppression State
Warning		Found conflicts between different versions of "Newtonsoft.Json" that could not be resolved.
There was a conflict between "Newtonsoft.Json, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" and "Newtonsoft.Json, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed".
"Newtonsoft.Json, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" was chosen because it was primary and "Newtonsoft.Json, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" was not.
References which depend on "Newtonsoft.Json, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" [C:\Program Files\IIS\Microsoft Web Deploy V3\Newtonsoft.Json.dll].
C:\Program Files\IIS\Microsoft Web Deploy V3\Newtonsoft.Json.dll
Project file item includes which caused reference "C:\Program Files\IIS\Microsoft Web Deploy V3\Newtonsoft.Json.dll".
Newtonsoft.Json
References which depend on "Newtonsoft.Json, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" [C:\Battlestate Games\AKI 2.0\EscapeFromTarkov_Data\Managed\Newtonsoft.Json.dll].
C:\Battlestate Games\AKI 2.0\EscapeFromTarkov_Data\Managed\Assembly-CSharp.dll
Project file item includes which caused reference "C:\Battlestate Games\AKI 2.0\EscapeFromTarkov_Data\Managed\Assembly-CSharp.dll".
Assembly-CSharp	NLog.EFT.Trainer

What is your EFT version?

<IP_ADDRESS>.14002

when i install to SPT 1.5.1 it recognises it and asks if I have done a first run but doesn't with 2.0 RC1

Installer PowerShell output when removing and reinstalling the trainer
PS C:\Users\jorda\Downloads> .\Installer.exe uninstall
-=[ EscapeFromTarkov-Trainer Universal Installer ]=-
Target EscapeFromTarkov (<IP_ADDRESS>02) in C:\Battlestate Games\AKI 2.0.
Removed NLog.EFT.Trainer.dll in C:\Battlestate Games\AKI 2.0\EscapeFromTarkov_Data\Managed.
Removed outline in C:\Battlestate Games\AKI 2.0\EscapeFromTarkov_Data.
Unpatched NLog.dll.nlog in C:\Battlestate Games\AKI 2.0\EscapeFromTarkov_Data\Managed.
PS C:\Users\jorda\Downloads> .\Installer.exe install
-=[ EscapeFromTarkov-Trainer Universal Installer ]=-
Target EscapeFromTarkov (<IP_ADDRESS>02) in C:\Battlestate Games\AKI 2.0.
Compilation succeded for master branch.
Created NLog.EFT.Trainer.dll in C:\Battlestate Games\AKI 2.0\EscapeFromTarkov_Data\Managed.
Created outline in C:\Battlestate Games\AKI 2.0\EscapeFromTarkov_Data.
Patched NLog.dll.nlog in C:\Battlestate Games\AKI 2.0\EscapeFromTarkov_Data\Managed.
PS C:\Users\jorda\Downloads>

I'm using <IP_ADDRESS>02 with SPT-AKI 2.0 RC1 on my box. Indeed we do not see that spt-aki is installed (but it is working as expected if you ran the game once).
I'm going to have a look.

note: it is expected to not have a trainer.ini, it will be auto-created when using save. But at least you should be able to do like status and see enabled features.

when using any commands it doesnt reconise ill do a screen recording and upload it for you in a few minutes

https://youtu.be/JOqLa-NmSGQ
its uploading and processing now should be watchable within like 10 mins tops

I updated the installer here:
https://github.com/sailro/EscapeFromTarkov-Trainer/releases
but I don't think this is linked to your issue.
What do you see in %LOCALAPPDATA%Low\Battlestate Games\EscapeFromTarkov\output_log.txt ?

output_log.txt

In the output_log.txt I can see references to E:/AKI 2.0/EscapeFromTarkov_Data but in the installer screenshot you have I can see  C:\Battlestate Games\AKI 2.0\EscapeFromTarkov_Data. We are not using the same drive !?
Are you sure you are running the proper EFT instance ? :) Could you double check you links.
I guess you are running the E:\ game executable and that's why the trainer is not enabled. You need to run the spt-aki server/launcher located in C:\Battlestate Games\AKI 2.0

Yup it was me forgetting to update the launcher to the new path, my fault


Fixes: #3550 Add Hello-world JAVA example using mill

Fixes: #3550
Created Build.sc file with proper format
Created helloworld.apk that runs on android
code runs with command mill app.create
All code Running but the problem is with android.jar file which needs to be present locally or remotely
@lihaoyi I request you to please once check the changes i made in the build.sc file its running well with the local code where android.jar is present but the problem is with the dependency for android.jar
Hope You Understand.
screenshot of running app

There are few things you should address here:

__build folder shouldn't be committed
signing key shouldn't be committed as well: it should either come from the user or generated on the fly for debug builds
targetSdkVersion should be updated to the 35 to keep up with the latest Android API
you should either run this example in the system image which already have Android SDK installed and all the licenses accepted, or download it and install the necessary components from your build script (former option is better, I believe)
.bat files you are trying to run won't be executed in Linux environment

you should either run this example in the system image which already have Android SDK installed and all the licenses accepted, or download it and install the necessary components from your build script (former option is better, I believe)

@0xnm as you said i have to use the system image but i think its for my local testing but what will happen when i have to run this code on a system where sdk is not installed then do we need to create a local.properties file for explicating the path or we need to create our build in such a way that it installs the android sdk on its own if not present
please explain me a little bit in detail

@lihaoyi @0xnm @lefou
Fixes: #3550
All the Checks Passed and All the files are committed as per requirements
Directory Structure:
Got it! Here’s the directory structure exactly in the format you provided:
example/
│
javallib/
│
hello-world/
│   AndroidManifest.xml
│   build.sc
└───java/
    └───com/
        └───helloworld/
            └───app/
            │   MainActivity.java

This matches your original format. You can use this as is in your README.md.
Create & Compile App using Mill _.compile
Kindly Review the Changes Made and Merge the Pull Request.
Screenshot :

@himanshumahajan138 I think this looks good as a first pass, but there's a bunch of work to be done to bring it in line with the rest of Mill's codebase. Some immediate action items that come to mind:

The example needs to be running in CI using the standard example/ folder format.

This can go in a new example/javalib/android/, register it in example/package.mill
It needs a /** Usage */ block with CLI instructions on how this is to be used, that will be executed as part of the example

The example should be self-contained and download all necessary files (as much as possible) as part of the build.

You can use requests.get in a target to download the various android.jar, d8, apksigner, etc. executables as documented in https://mill-build.org/mill/Bundled_Libraries.html#_requests_scala

Let's move the bulk of the non-app-specific logic into an trait AndroidModule in scalalib/src/mill/javalib/android, so that only app-specific logic would live in the build.sc file

Scaladoc should be done using /** */ to properly get picked up by the documentation system

The relationship between AndroidModule and JavaModule should be made clear. Does AndroidModule just provide the post-compilation step from classfiles->dex? Does it also provide custom source layouts and source->classfile compilation, or can it piggy-pack on the stuff that JavaModule already provides? I suspect a lot of the stuff calling javac ourselves is redundant
You should not need a build_path to put things in, the T.dest of each task should be sufficient, which you can wrap in PathRef(T.dest) and return from each task so downstream tasks can access the files using `upstreamTask().path / "blahblahblah"
The build.sc file should be build.mill as following the new file extension
Should use the new os.call((...)) syntax instead of os.proc().call(), and path / "platforms/android-35/android.jar" instead of path / "platforms" / "android-35" / "android.jar"
The various .bloop stuff probably shouldn't be committed

3. Let's move the bulk of the non-app-specific logic into an trait AndroidModule in scalalib/src/mill/javalib/android, so that only app-specific logic would live in the build.sc file

@lihaoyi
I am facing problem, please help
i created AndroidModule.scala file in mill/scalalib/src/mill/javalib/android/ and build.sc in mill/example/javalib/android/
But now when i am importing mill.javalib.android.AndroidModule in the build.sc then its giving error that AndroidModule doesnt exist i tried my whole day solving this reading the docs and all but still unable to figureout why this is happening
@lefou @0xnm @lihaoyi please help me if possible...

i created AndroidModule.scala file in mill/scalalib/src/mill/javalib/android/

I can't see this file is this PR.

Actually I didn't pushed coz if i try to push it will fail in checks

@lefou @0xnm @lihaoyi please help me if possible...

I fear it's not possible to help when we can't see anything. If you see some error, you need to show it! You should push your changes, so CI can catch it, too. That makes it reproducible and easy to look at.

Fixes : #3550
@lihaoyi @lefou @0xnm
I Changed Whole Code According to the Requirements and Code is running Fully in Local but i dont know what is happening when i pushed the code for live checking
Key Changes :

Create mill/example/javalib/android/1-hello-world/build.mill file which extends the AndroidModule.scala Trait and creates android app and then proper /** Usage */ for CLI
Created mill/scalalib/src/mill/javalib/android/AndroidModule.scala file which contains code for creating android application and then provided proper documentation in scaladoc format
Updated mill/example/package.mill for android folder

Please help me out i have not slept from last 2 days constantly to create proper code for #3550 issue and now when everything was working fine in my local its again got some issue with the live testing
Please Help me out !!!
@lihaoyi @lefou @0xnm

@himanshumahajan138 if you have not slept for the last two days, I will tell you straight that you should stop working on this and go sleep. Maybe you are able to complete the ticket and maybe you can't, but regardless we're not interested in you working yourself to the bone.

@lihaoyi Heartly Appreciated your words, please once review my pr and tell me what's wrong in this i again pushed some changes and this time i have followed each and every step as per requirements

Fixes : #3550
@lihaoyi @lefou @0xnm Please Review !!!
All test Passed and Code Worked as per the Requirements please Review and Merge #3596 to main branch
Finally after a Week of hustle 💯

I've updated the original ticket with some more details. I think you've made good progress, but still a ways to go

[ ] A folder in example/javalib/android/1-hello-world that contains a build that contains Java code for building a trivial hello-world android app APK, that can then be loaded into a physical phone or android emulator.

This isn't ready yet, the build is not yet of acceptable quality to be merged as an official example

[x] Just the simplest plain-old-Java android app is fine: no need fancier features or C++ code or whatever.
[x] Manual testing of the final APK is fine, but the process to build it should be exercised in the example.

I assume you've tested it, and the example passes

The app should have two modules containing Java code, one depending on another, to demonstrate how splitting of a app codebase into modules works

[ ] Not done yet. Currently it's only one module

Android-specific config should be extracted into a trait AndroidJavaModule in mill.javalib, and only app-specific config should be in the example/javalib/android/1-hello-world example

[ ] This is not yet of acceptable quality to be merged

Both the library code and the example code should be rigorously documented w.r.t. how it is used and how it fits into the larger Android ecosystem

[ ] This is not there yet. Doc-comments are a start, but that does not achieve rigorously documented w.r.t. how it is used and how it fits into the larger Android ecosystem

In general, the code now works, but for it to be an official Mill-android example we need to aim for higher than "works". Please go through all the other examples in example/, especially example/javalib/ example/scalalib/ and example/kotlinlib/, along with their associated scalalib/ and kotlinlib/ traits to see what a Mill example and module trait should look like. The example code doesn't need to be perfect, but it needs to fit into the prevailing Mill style and coding conventions, which this PR currently still does not

The app should have two modules containing Java code, one depending on another, to demonstrate how splitting of a app codebase into modules works

[ ]  Not done yet. Currently it's only one module

You Means we have to create two functions inside build.mill
or
Create two Separate Traits one for Downloading Android Setup and other for creating Android app and then extend them inside build.mill

You Means we have to create two functions inside build.mill
or
Create two Separate Traits one for Downloading Android Setup and other for creating Android app and then extend them inside build.mill

Two traits sounds reasonable. Assuming we provide good defaults, each trait we extend inside build.mill will be somewhere around 1-3 lines of code, not a huge burden to someone configuring the build. We could also set it up such that for someone who only has one android app, they can extend both traits in the same module

Notably, two modules doesn't mean two android apps. It means two java modules that end up being included in the one same android app

You Means we have to create two functions inside build.mill
or
Create two Separate Traits one for Downloading Android Setup and other for creating Android app and then extend them inside build.mill

Two traits sounds reasonable. Assuming we provide good defaults, each trait we extend inside build.mill will be somewhere around 1-3 lines of code, not a huge burden to someone configuring the build. We could also set it up such that for someone who only has one android app, they can extend both traits in the same module

OK so I will add One named as AndroidModule.scala  and other AppModule.scala

Let's name them AndroidSdkModule.scala and AndroidAppModule.scala, a bit more verbose but makes their roles clearer

Fixes: #3550
@lihaoyi
Sir can you please review my AndroidAppModule.scala
I have formatted it fully and it passed local linting check
But i dont know why it failed maybe some thing left on my part which i am unable to figureout,
So i request you to please review the code ✅

Fixes #3550
@lihaoyi
Final All test Passed and All Requirements also completed
Please Review the code and then i will start documentation.....
@lihaoyi @0xnm @lefou

@himanshumahajan138 I'm going to make the call and say that this collaboration isn't going to work out. I don't think you have the expertise necessary to push this over the finish line, there's a limit in how much I can hold your hand, and I don't see this PR converging to a merge-able state with a reasonable amount of time and effort.
Thank you for the time you put in, I know you've tried hard and done your best, but I'm going to call it quits on this one and close this PR to open up the space for others to attack the problem

@lihaoyi
I think this is not fare !
All the things are almost covered
Keypoints:

Created build.mill which inherits AndroidAppModule and AndroidSdkModule
AndroidSdkModule trait provides the implementation for Sdk download
AndroidAppModule trait provides the implementation for App Creation
App configuration related stuff will be updated in build.mill file making it unique from default app creation
Proper scaladoc and usage followed to implement the code
App testing done in local, results passed
Code fully reusable for unique application
Passed all automated testcases

Just asking for review because i want to create documentation based on finetuned code but when i was near finish line you just kicked me out
i heartly request you to please tell me what is left and i will provide you with the professional code and documentation
i have worked a lot for this please understand....
please give me a chance !


Fix ones_like, zeros_like when input is _Partial

When input is _Partial and we have operators that set the elements of the output to a given value, the output cannot be _Partial. Instead we should set it as Replicated.

Thank you for the PR comments!


[Feature] Add an option for join/leave messages: Excluded Servers

What type of feature is it?
Put an x in a option, like [x]

[ ] New Command
[x] Config option
[ ] Other

Describe your feature
I have a login server, and I don't want players to be shown as online before they have actually logged in. If it's possible to add an option to exclude specific servers, that would be great. Thank you very much.

What platform are you talking about?


Update autofill to 0.0.6_test

Reviewer:
Asana: https://app.asana.com/0/1203252749195836/1203252749195836
Autofill Release: https://github.com/duckduckgo/duckduckgo-autofill/releases/tag/0.0.6_test
Description
Updates Autofill to version 0.0.6_test.
Autofill 0.0.6_test release notes
And another one, still with emoji 🚀.

Feature one
Feature bold

Steps to test
This release has been tested during autofill development. For smoke test steps see this task.

Test PR. Closing.


Enabling multiple active result sets before connecting

I have a use case where it would be convenient to use multiple active result sets (MARS) for lazily loaded data (e..g. I'd like to avoid creating my own connection pool and opening result sets on separate connections).
An easy workaround for the moment is to append it to the end of the connection string, but I was wondering how to properly handle this. ODBC allows MARS to be enabled or disabled before connecting by using SQLSetConnectAttr with SQL_COPT_SS_MARS_ENABLED (see https://docs.microsoft.com/en-us/sql/relational-databases/native-client-odbc-api/sqlsetconnectattr?view=sql-server-ver15#sql_copt_ss_mars_enabled).
For the existing connect calls, like
ENV.driver_connect(...);

we could expose a way to toggle MARS on the environment (globally) for all future connections. We could have something like ENV.set_multiple_active_result_sets(true) which could be called before driver_connect.
Does that approach sound reasonable? Or should we have some kind of connection builder, or pass connection configuration like this an argument to all connection creation functions (e.g. driver_connect)?

Actually something like ENV.set_multiple_active_result_sets(true) wouldn't work because we'd need to call SQLSetConnectAttr using the allocated connection handle

Looking into this some more, creating my own connection pool seems to be the most reliable way to do this, because MARS support isn't guaranteed depending on the driver

Hello @grovesNL ,
how about using ODBC intrinsic connection pool?
See: https://docs.rs/odbc-api/0.24.1/odbc_api/guide/index.html#connection-pooling

Yeah I think that would be a good idea, I'll try it out. Currently I only need two active result sets, so I was able to get this working by keeping two connections open, but it would be nice for the driver to do this for me.
It might be interesting to use the ODBC connection pool and request a new connection (reusing it from the pool if possible) any time I run execute for a query. I'm not sure how much overhead that adds but hopefully it would be relatively small. If the overhead of requesting a connection from the pool is significant, then I'd still have to keep open connections around in the application anyway.

Here is the ODBC documentation to that topic: https://docs.microsoft.com/en-us/sql/odbc/reference/develop-app/driver-manager-connection-pooling?view=sql-server-ver15
If you should roll your own pool you can use is_dead to detect dead connections. https://docs.rs/odbc-api/0.24.1/odbc_api/struct.Connection.html#method.is_dead

Unfortunately it looks like enabling connection pooling means I can't use the driver connect prompt:

State: HY110, Native error: 0, Message: [Microsoft][ODBC Driver Manager] Only SQL_DRIVER_NOPROMPT is allowed when connection pooling is enabled

I could probably move any calls needing the driver prompt to a separate process (i.e. I'd have two processes with their own ODBC environments -- one with connection pooling and one without), but it would probably be easier to manage connections on my own at that point.

Yes, trading the handling of multiple Connections vs trading the handling of multiple environments, I'd rather handle multiple connections myself..


Allow changing request on retry (e.g. access token in header)

Sorry for scrapping the issue template but this is not a bug report, it's a feature request.
I would like to be able to retry on 401 errors, but I would like to refresh my access token in the header for the new request (in case the 401 was caused by the access token being invalidated on the server). Is there any way to do that with this gem? That is, have some lambda that lets me tweak the request on retries. Thanks.

Hi @jesseduffield, that's a perfectly good question!
I think the retry_block would be what you need for this case?
You can read more about it in the README.
I'll be closing this but please feel free to reopen or follow up if you have any questions 👍

Appreciate also the README assumes some knowledge of the request structure, so let me dig a bit further and see if that helps.
We have Yard documentation around it which can easily be missed:
# @option options [Block] :retry_block block that is executed before
#   every retry. The block will be yielded keyword arguments:
#     * env [Faraday::Env]: Request environment
#     * options [Faraday::Options]: middleware options
#     * retry_count [Integer]: how many retries have already occured (starts at 0)
#     * exception [Exception]: exception that triggered the retry,
#       will be the synthetic `Faraday::RetriableResponse` if the
#       retry was triggered by something other than an exception.
#     * will_retry_in [Float]: retry_block is called *before* the retry
#       delay, actual retry will happen in will_retry_in number of
#       seconds.

You can specify a retry_block option and pass a proc or lambda to it. This proc will be executed BEFORE a request is retried:
options = {
  retry_block: -> (env:, options:, retry_count:, exception:, will_retry_in:) do
    # do something with env, options, retry_count, exception or will_retry_in
  end
}

conn = Faraday.new(...) do |f|
  f.request :retry, options
end

In your case, you want to refresh the auth token, meaning you need probably need to update the Authorization header value. Headers can be accessed through the env variable, which is a Faraday::Env object:
options = {
  retry_block: -> (env:, options:, retry_count:, exception:, will_retry_in:) do
    env.request_headers[:authorization] = "Bearer <my refreshed token value>"
  end
}

@iMacTia awesome, thanks for taking the time to spell that out, it's really helpful.


Use new GCP template based on openSUSE 15.6

What does this PR do?
followup for https://github.com/rancher/hosted-providers-e2e/pull/123
Bumping GCP template to openSUSE 15.6 on release/v2.8 branch
Testrun for GKE p0_provisioning here https://github.com/rancher/hosted-providers-e2e/actions/runs/9792091101

Thank you for backporting this!


The video file downloaded with a resume (e.g. disk full error) does not give the same md5 as the file downloaded without any problem from the start. Possible bug when resuming the download.

Checklist

[ ] I'm reporting a broken site support issue
[x] I've verified that I'm running youtube-dl version 2020.12.14
[x] I've checked that all provided URLs are alive and playable in a browser
[x] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[x] I've searched the bugtracker for similar bug reports including closed ones
[x] I've read bugs section in FAQ

Verbose log

N:\TEMP\youtube-dl>youtube-dl -f 248+251 Ta7y_e4ySPM --merge-output-format mkv -v
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['-f', '248+251', 'Ta7y_e4ySPM', '--merge-output-format', 'mkv', '-v']
[debug] Encodings: locale cp950, fs mbcs, out cp950, pref cp950
[debug] youtube-dl version 2020.12.14
[debug] Python version 3.4.4 (CPython) - Windows-10-10.0.18362
[debug] exe versions: ffmpeg 4.1
[debug] Proxy map: {}
[youtube] Ta7y_e4ySPM: Downloading webpage
[youtube] {18} signature length 108, html5 player 62f90c99
[youtube] {22} signature length 108, html5 player 62f90c99
[youtube] {137} signature length 104, html5 player 62f90c99
[youtube] {248} signature length 108, html5 player 62f90c99
[youtube] {136} signature length 108, html5 player 62f90c99
[youtube] {247} signature length 104, html5 player 62f90c99
[youtube] {135} signature length 108, html5 player 62f90c99
[youtube] {244} signature length 108, html5 player 62f90c99
[youtube] {134} signature length 104, html5 player 62f90c99
[youtube] {243} signature length 104, html5 player 62f90c99
[youtube] {133} signature length 104, html5 player 62f90c99
[youtube] {242} signature length 104, html5 player 62f90c99
[youtube] {160} signature length 108, html5 player 62f90c99
[youtube] {278} signature length 108, html5 player 62f90c99
[youtube] {140} signature length 108, html5 player 62f90c99
[youtube] {249} signature length 108, html5 player 62f90c99
[youtube] {250} signature length 108, html5 player 62f90c99
[youtube] {251} signature length 108, html5 player 62f90c99
[download] もつ鍋食べながら今年を振り返る【はづちゃんねる】-Ta7y_e4ySPM.mkv has already been downloaded and merged

Description

Download any video from youtube and merge it to mkv. Failed due to disk full.
Free disk space, download resumed with the same command. Download completed. (file A)
Download the same video from youtube. This time no error from beginning to end. (file B)
Compare md5 of file A and file B (eg. nirsoft hashmyfiles), same file sizes, but different md5.
Repeat step 3. Also no error from beginning to end. (file C)
File B and C has the same md5. So I think this may be a problem with file A and then I create this bug.
Also I am not sure if this is youtube specific, so I pick this bug type.

PS. Not sure if the difference is only due to some metadata on the raw streams from an "uninterrupted download" versus a "resumed download", maybe this bug could be closed? But I am no expert so I leave this to pros like you guys. Thanks.
"w" is just handy batch flie.
N:\TEMP\youtube-dl>w https://www.youtube.com/watch?v=Ta7y_e4ySPM
[youtube] Ta7y_e4ySPM: Downloading webpage
[download] Destination: もつ鍋食べながら今年を振り返る【はづちゃんねる】-Ta7y_e4ySPM.f248.webm
[download]  96.3% of 147.04MiB at  1.43MiB/s ETA 00:03

ERROR: unable to write data: [Errno 28] No space left on device

N:\TEMP\youtube-dl>w https://www.youtube.com/watch?v=Ta7y_e4ySPM
[youtube] Ta7y_e4ySPM: Downloading webpage
[download] Resuming download at byte 148530143
[download] Destination: もつ鍋食べながら今年を振り返る【はづちゃんねる】-Ta7y_e4ySPM.f248.webm
[download] 100% of 147.04MiB in 00:04
[download] Destination: もつ鍋食べながら今年を振り返る【はづちゃんねる】-Ta7y_e4ySPM.f251.webm
[download] 100% of 11.68MiB in 00:08
[ffmpeg] Merging formats into "もつ鍋食べながら今年を振り返る【はづちゃんねる】-Ta7y_e4ySPM.mkv"
Deleting original file もつ鍋食べながら今年を振り返る【はづちゃんねる】-Ta7y_e4ySPM.f248.webm (pass -k to keep)
Deleting original file もつ鍋食べながら今年を振り返る【はづちゃんねる】-Ta7y_e4ySPM.f251.webm (pass -k to keep)

Report to ffmpeg.


Nuitka  >=0.7 , No module named 'tkinter'

Before submitting an Issue, please review the Issue Guidelines.

Please check whether the bug was already reported or fixed.

Please check out if the develop version of Nuitka works better for you.
Download source, packages from here
where you will also find instructions how to do it via pip.

If you want to post a problem/bug, to help us understand and resolve your issue
please check that you have provided at least the information below, and discard
up to here:

Nuitka version, full Python version, flavor, OS, etc. as output by this
command (it does more than you think, and we are adding more all the time):

python -m nuitka --version

<IP_ADDRESS>
Commercial: None
Python: 3.7.11 (default, Jul 27 2021, 09:42:29) [MSC v.1916 64 bit (AMD64)]
Flavor: Anaconda Python
Executable: E:\anaconda3\envs\python37\python.exe
OS: Windows
Arch: x86_64
WindowsRelease: 10

How did you install Nuitka and Python
Did you use pip, anaconda, deb, rpm, from source, git clone, then install into
a virtualenv or not, this is very important usually.

The specific PyPI names and versions
It should be taken from this output if there specific packages involved, e.g.
numpy, you are expected to shorten this to the relevant ones.

python -m pip freeze

astor==0.8.1
atomicwrites==1.4.0
attrs==21.4.0
Babel==2.9.1
bce-python-sdk==0.8.64
certifi==2021.10.8
cfgv==3.3.1
chardet==4.0.0
charset-normalizer==2.0.12
click==8.0.4
colorama==0.4.4
cycler==0.11.0
decorator==5.1.1
distlib==0.3.4
et-xmlfile==1.1.0
filelock==3.6.0
flake8==4.0.1
flake8-import-order==0.18.1
Flask==2.0.3
Flask-Babel==2.0.0
Flask-Cors==3.0.10
fonttools==4.29.1
future==0.18.2
identify==2.4.11
idna==3.3
importlib-metadata==4.2.0
iniconfig==1.1.1
itsdangerous==2.1.0
Jinja2==3.0.3
joblib==1.1.0
kiwisolver==1.3.2
lap==0.4.0
MarkupSafe==2.1.0
matplotlib==3.5.1
mccabe==0.6.1
motmetrics==1.2.0
nodeenv==1.6.0
Nuitka==<IP_ADDRESS>
numpy==1.19.3
opencv-python==<IP_ADDRESS>
openpyxl==3.0.9
packaging==21.3
paddlepaddle-gpu==2.2.2.post112
paddleslim==2.2.1
paddlex==2.1.0
pandas==1.3.5
Pillow==9.0.1
platformdirs==2.5.1
pluggy==1.0.0
pre-commit==2.17.0
protobuf==3.19.4
py==1.11.0
py-cpuinfo==8.0.0
pycocotools==2.0.4
pycodestyle==2.8.0
pycryptodome==3.14.1
pyflakes==2.4.0
pyparsing==3.0.7
PySimpleGUI==4.48.0
pytest==7.0.1
pytest-benchmark==3.4.1
python-dateutil==2.8.2
pytz==2021.3
PyYAML==6.0
pyzmq==22.3.0
requests==2.27.1
scikit-learn==0.23.2
scipy==1.7.3
Shapely==1.8.1.post1
shellcheck-py==<IP_ADDRESS>
six==1.16.0
threadpoolctl==3.1.0
toml==0.10.2
tomli==2.0.1
tqdm==4.63.0
typing_extensions==4.1.1
urllib3==1.26.8
virtualenv==20.13.2
visualdl==2.2.3
Werkzeug==2.0.3
wincertstore==0.2
xmltodict==0.12.0
zipp==3.7.0

Problem description：
pip install Nuitka==<IP_ADDRESS>
The program is normal
But the upgraded version
Nuitka  >=0.7
PySimpleGUI
python -m nuitka    --standalone  --show-progress   --plugin-enable=tk-inter   --nofollow-imports  --output-dir=OUT Dan.py
Traceback (most recent call last):
File "H:\hello\Dan.py", line 13, in
File "H:\hello\PySimpleGUI_init_.py", line 2, in
from .PySimpleGUI import *
File "H:\hello\PySimpleGUI\PySimpleGUI.py", line 116, in
import tkinter as tk
ModuleNotFoundError: No module named 'tkinter'

You picked an excellent combination of options there that makes it the expected output. It working before was definitely coincidental. Read warnings of Nuitka, they mean things.


Add unstructured logger

Codecov Report

Merging #14 (38d7a7e) into v2 (70804ff) will not change coverage.
The diff coverage is 100.00%.

:exclamation: Current head 38d7a7e differs from pull request most recent head 959d9fc. Consider uploading reports for the commit 959d9fc to get more accurate results

@@            Coverage Diff            @@
##                v2       #14   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            3         4    +1
  Lines          162       182   +20
=========================================
+ Hits           162       182   +20

Impacted Files
Coverage Δ

logger.go
100.00% <100.00%> (ø)

registry.go
100.00% <100.00%> (ø)

unstructured.go
100.00% <100.00%> (ø)

@basvanbeek I've added a couple of examples but the unstructured one fails consistently. When running from the IDE it always passes, but when running from the shell directly it fails, so it's quite hard to debug and I haven't been able to figure out what is wrong. Could you give me a hand here?


Testing form components in v6

The redux docs for writing tests suggest to export the undecorated version of a connected component alongside the decorated one for testing purposes. Redux form v6 currently breaks this functionality here:
  class Field extends Component {
    constructor(props, context) {
      if (!context._reduxForm) {
        throw new Error('Field must be inside a component decorated with reduxForm()')
      }
    // ...

So, given a component:
// MyForm.js
export function MyForm (props) {
    return (
        <Field name="field1" component={React.DOM.input}>
    );
}

export default reduxForm({form: 'myform'})(MyForm);

It is impossible to run tests on either the undecorated or the connected MyForm. Trying to test the connected form like this:
// testMyForm.js

import MyForm from '../src'; // This is the connected (default) export, not recommended by redux docs

describe('<MyForm>', function () {
    before('Render and locate', function () {
        this.tree = TestUtils.renderIntoDocument(<MyForm>);
        // ...
    });
});

Obviously throws errors about not having a store at all, since we haven't provided the redux context.
Changing the import to:
import { MyForm } from '../src'; // recommended way from redux docs

So that we are now disconnected from redux, however, causes redux-form to throw the error that I showed above: Field must be inside a component decorated with reduxForm()

We solved this at my company by building a test helper that will generate a fake store that uses redux-form: https://github.com/smaato/react-test-kit#mockformstore
Here's the source: https://github.com/smaato/react-test-kit/blob/master/src/mockFormStore.js

You should checkout how Redux Form is tested.
https://github.com/erikras/redux-form/blob/v6/src/__tests__/reduxForm.spec.js

Would it be possible to add documentation / an example to the redux-form website?
I feel like there is still a good bit of confusion. (I personally am having a hard time deducting the essential parts from the referenced ~1000LOC test file).
More so, I have seen wildely differing approaches and have a hard time figuring, which are the easiest and most beneficial to use. (See for example #111 but also the different approaches in this thread).
TL;DR An official and documented approach to testing would be very appreciated.

This is still unclear to me.  I am unable to test any undecorated components that include Field components due to Field must be inside a component decorated with reduxForm()

Hello, same thing here. Is it possible for someone who does good unit testing to do a PR on the documentation for this part please ?

I think I succeed to make a snapshot test to a component based on what I saw in the source: https://github.com/erikras/redux-form/blob/master/src/tests/reduxForm.spec.js#L66
Basically instead on try to render directly my component Products I did a decorated one:
const Decorated = reduxForm({ form: 'testForm' })(Products);
And then I passed my props directly to the decorated component:
<Decorated
  repository={fixture}
  handleSubmit={spy}
  submitting={false}
  submit={spy}
/>

Here the full test, let me know if it's working for you guys.
import React from 'react';
import renderer from 'react-test-renderer';
import { reduxForm } from 'redux-form';
import { createStore } from 'redux';
import { Provider } from 'react-redux';

import { Products } from '../Products';
import { default as fixture } from './fixture';

const spy = jest.fn();
const store = createStore(() => ({}));

const Decorated = reduxForm({ form: 'testForm' })(Products);
describe('Products Component snapshot', () => {
  it('should render the snapshot', () => {
    const tree = renderer.create(
      <Provider store={store}>
        <Decorated
          repository={fixture}
          handleSubmit={spy}
          submitting={false}
          submit={spy}
        />
      </Provider>
    ).toJSON();
    expect(tree).toMatchSnapshot();
  });
});

So I separate form from state to gain testability, but in the tests I need to wrap it again in a fake state to gain testability? Yeah, that's non sense for me.

Not really if you do only shallow rendering.
import { expect } from "chai";
import { shallow } from "enzyme";

const fooField = shallow( <MyForm /> ).find( Field ).filter({ name: "foo" });
expect( fooField ).to.be.present();

However, if you want to test Jest snapshots, I think it's very likely you'll need the full HTML generated by every component.

Yes, you're right. I am able to test it individually with shallow. I am using Mocha, so it will be fine to use shallow. Thank you. :)

There are other scenarios such as using React Storybook where it would be useful to be able to mount non-decorated components for simulating different states without mocking a full redux store.

We can mock out the Field implementation to render its props component instead of Field itself in order to achieve store-less testing.
Here's my mock to be used in Jest:
// __mocks__/redux-form
import React from 'react'

const ReduxForm = require.requireActual('redux-form')

// Make Field render the component in the props
ReduxForm.Field = (props) => {
  const { component, ...others } = props
  return <component {...others} />
}

export const {
  actionTypes,
  arrayInsert,
  arrayMove,
  arrayPop,
  arrayPush,
  arrayRemove,
  arrayRemoveAll,
  arrayShift,
  arraySplice,
  arraySwap,
  arrayUnshift,
  autofill,
  blur,
  change,
  destroy,
  Field,
  Fields,
  FieldArray,
  Form,
  FormSection,
  focus,
  formValueSelector,
  getFormNames,
  getFormValues,
  getFormInitialValues,
  getFormSyncErrors,
  getFormAsyncErrors,
  getFormSyncWarnings,
  getFormSubmitErrors,
  initialize,
  isDirty,
  isInvalid,
  isPristine,
  isValid,
  isSubmitting,
  hasSubmitSucceeded,
  hasSubmitFailed,
  propTypes,
  reducer,
  reduxForm,
  registerField,
  reset,
  setSubmitFailed,
  setSubmitSucceeded,
  startAsyncValidation,
  startSubmit,
  stopAsyncValidation,
  stopSubmit,
  submit,
  SubmissionError,
  touch,
  unregisterField,
  untouch,
  values
} = ReduxForm

+1 for this error still being a drag for unit testing.
We statefully manage certain props (related to presentation purposes only) within our components.  It makes for better efficiency and readability.  We are unable to test the state for components that contain a  element (even if they are subcomponents of the form).

When mocking the store using the methods described above, I get the following problem:
    Actions must be plain objects. Use custom middleware for async actions.

What's that about? Even if I force all actions to be plain objects in the mocked store, it comes up (and the snapshot test fails).

That's a Redux error. Not related to redux-form.

I just wanted to see readonly versions of various states of my component. So I made this ugly fake context feeder which still need react-redux provider, cause it is still requiring connect.
But the store does not affect anything and Field can spam actions as it wish.
You can swap data in provider as your heart pleases you.
import React from "react";
import PropTypes from "prop-types";
import { storiesOf } from "@storybook/react";
import UniversitySuggestionComponent from "../components/UniversitySuggestion/UniversitySuggestionComponent.jsx";
import { withContext } from 'recompose';
import { createStore } from "redux";
import { Provider } from 'react-redux';

const fields = {
  universityName: {
    value: 'Michigan',
    touched: false,
    error: null,
  },
  name: {
    value: 'Somebody',
    touched: false,
    error: null,
  },
  email: {
    value<EMAIL_ADDRESS>    touched: false,
    error: null,
  },
};

const values = {
  universityName: 'Michigan',
  name: 'Somebody',
  email<EMAIL_ADDRESS>};

const defaultReduxFormProps = {
  onSave: () => {},
  handleSubmit: () => {},
  reset: () => {},
  submitting: false,
  initial: values,
  values: values,
  fields: fields,
};

const fakeReducer = (state = {}) => state;
const store = createStore(
  fakeReducer,
);

const fakeFunction = () => ({ type: 'fake'});

const reduxFormShape = PropTypes.shape({
  register: PropTypes.func.isRequired,
  unregister: PropTypes.func.isRequired,
  getValues: PropTypes.func.isRequired,
  getFormState: PropTypes.func.isRequired,
  change: PropTypes.func.isRequired,
  focus: PropTypes.func.isRequired,
  blur: PropTypes.func.isRequired,
  asyncValidate: PropTypes.func.isRequired,
});

const reduxFormFakeContext = formState => ({
  register: fakeFunction,
  unregister: fakeFunction,
  getValues: fakeFunction,
  getFormState: () => formState,
  change: fakeFunction,
  focus: fakeFunction,
  blur: fakeFunction,
  asyncValidate: fakeFunction,
});

const contextEnhancer = withContext(
  { _reduxForm: reduxFormShape }, //childContextTypes
  (props) => ({ _reduxForm: reduxFormFakeContext(props.fakeForm) }) //getChildContext
);

const FormContainer = props => (<div>{props.children}</div>);

const FormProvider = contextEnhancer(FormContainer);

storiesOf('UniversitySuggestion', module)
  .add('Default form', () => (
    <Provider store={store}>
      <FormProvider fakeForm={defaultReduxFormProps}>
        <UniversitySuggestionComponent />
      </FormProvider>
    </Provider>
  ));

I've got the same issue and try to test component that receives props from 'formValues',  How to simulate and pass the props to 'shallow' and check some statement in render with , is it possible to set props to shallow
export const MiConfiguration = ({miConfiguration, change}) =>

<Field
name='miConfigurationType'
component={renderSelectField}
label={}
style={{width: 400, ...styles.selectField}}
hintText={}
autoWidth
onChange={(e, newValue) => Object.keys(defaultValues[newValue]).forEach(key => change(key, defaultValues[newValue][key]))}
>
{Object.keys(MiConfigurationTypes).map(type =>
<MenuItem value={type} primaryText={<FormattedMessage id={passage.scenario.${type}} />}/>)}

{miConfiguration && !!miConfiguration.miConfigurationType &&
<InfoMessage id={miConfiguration.description.${miConfiguration.miConfigurationType}} />}
{miConfiguration && miConfiguration.miConfigurationType !== MiConfigurationTypes.AccessPointOnly &&
<Paper style={{padding: 15, marginTop: 10}}>

{getMiConfiguration(miConfiguration.miConfigurationType)}

}

export default formValues('miConfiguration')(MiConfiguration)
describe.only('', () => {
let component, onChange, initialValues
let device = {miConfiguration:{isMiEnabled: 'dimon', miConfigurationType: 'Type'}}
beforeEach(() => {
    initialValues ={ initialValues:{
        ...device,
    }}
    component = shallow(<MiConfiguration miConfiguration={{miConfiguration: {}}} miConfiguration={{}} change={onChange = sinon.spy()}/>, { context:{ _reduxForm: {}}})
})

it.('should render sInfoMessage correct id', () => {

component.find(InfoMessage).props().id.should.be.equal(`miConfiguration.description.${miConfiguration.miConfigurationType}``)
})
})

@javidjamae
How to use with Field?
In my case "React.Children.only expected to receive a single React element child" error happened.
storiesOf("Task", module)   .addDecorator(ReduxFormDecorator({ form: "taskAssetManager" }))   .addDecorator(Provider)   .add("TaskAssetManager", () => {     return (       <Field         component={TaskAssetManager}         name="assets"         onChange={action("onChanged")}       />     );   });

@ChrisRyuGS I don't know, maybe this: https://github.com/storybooks/storybook/issues/113

Mocking redux-form with jest allows me to snapshot test without having to mess with the store at all:
jest.mock('redux-form', () => {
   Field: 'Field',
   reduxForm: () => component => component,
}));

import ConnectedComponent from './Component';
import React from 'react';
import { mount } from 'enzyme';
import { Provider } from 'react-redux';
import toJson from 'enzyme-to-json';
import configureStore from 'redux-mock-store';
import {
  reducer1,
  reducer2
} from 'redux-base/reducers';
import {
  action1,
  action2
} from 'redux-base/actions';

const initialState = {
  reducer1: {
    ...reducer(),
    data: {
      a: 1,
      b: 2,
      c: 3,
    }
  },
  reducer2: reducer2(),
}
describe('ConnectedComponent', () => {
  it('saves smth on submit ', () => {
  const store = mockStore(initialState);

  const component = mount(
   <Provider store={ store }>
     <ConnectedCustomer
       { ...props } // props you can define above and pass to the component
     />
   </Provider>
 );

 component.find('button#submitButton').simulate('submit');

 const actions = store.getActions();
 const actionOnSubmit = actions.find(action => action.type === action2().type);
 expect(actionOnSubmit.type).toBe(action2().type)

 component.unmount();
}
}
}

example of testing ConnectedComponent in case of submit action


chore: :truck: Don't need these files in folders, moving as standalone qmd files

In line with previous steps to rename md to qmd files, I've renamed these files and moved to their own files, rather than in folders (that wasn't actually necessary for their use case).
Only needs a quick review.

@lwjohnst86 And just for my understanding: Why wasn't it necessary to include them in folders and as index.qmd within those folders for these use cases?


java.lang.NullPointerException in DrawableContainer.java:884

Error in mSupply Mobile
java.lang.NullPointerException in DrawableContainer.java:884
Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference
View on Bugsnag
Stacktrace
DrawableContainer.java:884 - android.graphics.drawable.DrawableContainer$DrawableContainerState.getChild

View full stacktrace
Created automatically via Bugsnag

Closed several like this. Possibly RN. Don't know. Too stale to know.


question about gdap file

What does this like do?
remote=["ir.cafebazaar:poolakey:1.0.0-alpha08"]

As you can read in Godot android plugin creating documention that defines a dependency to Cafebazaar poolakey api.


Code for generating results figures?

I want to compare a new approach to Skew-Fit and RIG. Many figures plot 'distance to goal' and 'success rate'. Is the code for generating these plots separate from rlkit? How can I compare to the published results?

You can use https://github.com/vitchyr/viskit or this utility: https://github.com/vitchyr/rlkit/blob/master/rlkit/visualization/plot_util.py to generate plots. The published figures use plot_util


Usage of T9 "1" keyboard button

Is your feature request related to a problem? Please describe.
For now there's key map for Numpad "1" usage but its not working correctly. (aka "7")
Describe the solution you'd like
Treat "1" as special action key which can type char's: ['.', ',', '?', '!'],
Describe alternatives you've considered
Simplified usage: Special Action Key with only "." value

Alternative special key "seven" implementation done:
https://github.com/Edios/t9keyboard/pull/18


Cataloging pangeo-forge datasets

When a dataset gets "published" by pangeo forge, we want to create a catalog entry for it. Some options for this catalog entry are:

Intake (what we currently do)
STAC
Some custom database

Regardless of how we do, we will need to collect some meta-metadata from the pipeline creator about the dataset, such as:

License
Provenance
STAC stuff like "providers"

Pangeo forge should provide all the technical entries to the catalog like:

URL
Access protocol (e.g. zarr)
Requestor pays stuff
Cloud region

Related issue from @charlesbluca: in order to make zarr metadata browseable, we need

.zmetadata fully public (not requestor pays)
CORS set correctly

Thanks for opening this issue, Ryan. Just to make sure I'm on the right track here, a projected plan of implementing these features should look like:

Adding tasks intake.py, stac.py, csv.py, etc.:

Intake task would create an Intake catalog with the specified target as an entry, or append an entry to this catalog if it already exists
STAC task would create a new parent STAC catalog at the root of the target's bucket with a link to a new STAC collection representing the target (dependent on access protocol), or append the link to a new collection if the parent catalog already exists
CSV task would create a CSV file with the target as an entry (including specified column names/values), or append an entry if it already exists

Incorporating these tasks into new or existing pipelines:

A new pipeline would check the structure of previously published datasets, and create a catalog(s) for them
An addition to an existing pipeline would perform the creation of/appending to the catalogs immediately after the successful publishing of a dataset

In terms of input from the pipeline creator, I think some other meta-metadata that we could collect would be:

Catalog/collection location - this could default to the root of the bucket/target directory, but would be nice if we eventually want to create more complex nested catalogs for published datasets
Entry names - again, this could default to a name based on the target or source directories, but would move us closer to the user-generated catalogs we have on pangeo-datastore

Finally, if we opt to add these tasks to an existing pipeline, that may require an expansion to the current naming convention being considered - something like {source}_{container}_{target}_{catalogFormat}.py.

Thanks for this Charles!
I've been thinking about this issue A LOT... I think that, before we can integrate catalog updates into pangeo forge itself, we need to settle on a catalog format, structure, and creation / update procedure.
This brings us back to STAC...
I'm working on some ideas here and will send an update soon.

Excited to hear what ideas you have in mind - in the meantime, I'll be consulting PySTAC's API reference to get a feel for generating/updating absolute published catalogs.


Fixed some typos so that XML descriptions are valid

just a few typos and repeated tags!-)

Thanks, Sébastien!


[nfs-provisionner] Unable to share single files

Those are the volumeMouns of a Replication Controller mounted to the nfs-provisioner:
       volumeMounts:
          - name: nfs
            mountPath: /etc/nginx/nginx.conf
            subPath: robot/nginx/nginx.conf
          - name: nfs
            mountPath: /etc/nginx/fullchain.pem
            subPath: robot/nginx/fullchain.pem
          - name: nfs
            mountPath: /etc/nginx/privkey.pem
            subPath: robot/nginx/privkey.pem
          - name: nfs
            mountPath: /etc/nginx/.htpasswd
            subPath: robot/nginx/.htpasswd
          - name: nfs
            mountPath: /usr/share/nginx/html
            subPath: robot/www

The 3 first ones will never mount and fail (they are use to mount single files), only the fourt one  will work because is mounting a entire directory.
While i can recreate the pods to work with only directories is really handy to mount single files.

I agree would be handy, but I believe for this to work it would have to be done on kubernetes's end. It would have to look at mountPath and do some magic if it's a file not a die. So please file an issue upstream, https://github.com/kubernetes/kubernetes/issues/19764 Is the closest one I could find

Thanks wongma7, i'll dig into that one.

Sorry to revisit this so late, but let's say I have a new understanding of how subpath works..
Does this work if you set mountPath just to the parent directory? Like this

name: nfs
mountPath: /etc/nginx/
subPath: robot/nginx/nginx.conf

I'll play around with this tomorrow

Scratch that last comment; in fact, I got around to trying this myself and sharing single files via subPaths works fine for me now:
          - name: nfs
            mountPath: /etc/nginx/.htpasswd
            subPath: robot/nginx/.htpasswd

Please reopen with error messages if any, ty!


BUG: add nodes failure

Sealos Version
main
How to reproduce the bug?
only a master of the cluster at the beginning
root@lin-master:/home/ubuntu# sealos add --nodes <IP_ADDRESS>
2022-12-22T08:05:57 info start to scale this cluster
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x2c65d42]

goroutine 1 [running]:
github.com/labring/sealos/pkg/apply/processor.NewScaleProcessor({0x36d49f0, 0xc000568160}, {0xc00071b200, 0x2, 0x4}, {0x0, 0x0, 0x0}, {0x0, 0x0, ...}, ...)
	/root/tmp/sealos/pkg/apply/processor/scale.go:264 +0x62
github.com/labring/sealos/pkg/apply/applydrivers.(*Applier).scaleCluster(0xc0004d0870, {0x0, 0x0, 0x0}, {0x0, 0x0, 0x0}, {0xc0001fb550, 0x1, 0x1}, ...)
	/root/tmp/sealos/pkg/apply/applydrivers/apply_drivers_default.go:194 +0x518
github.com/labring/sealos/pkg/apply/applydrivers.(*Applier).reconcileCluster(0xc0004d0870)
	/root/tmp/sealos/pkg/apply/applydrivers/apply_drivers_default.go:150 +0x416
github.com/labring/sealos/pkg/apply/applydrivers.(*Applier).Apply(0xc0004d0870)
	/root/tmp/sealos/pkg/apply/applydrivers/apply_drivers_default.go:91 +0x298
github.com/labring/sealos/cmd/sealos/cmd.newAddCmd.func1(0xc000449200?, {0xc000718340?, 0x2?, 0x2?})
	/root/tmp/sealos/cmd/sealos/cmd/add.go:50 +0x47
github.com/spf13/cobra.(*Command).execute(0xc000449200, {0xc000718320, 0x2, 0x2})
	/root/gowork/pkg/mod/github.com/spf13/cobra@v1.6.1/command.go:916 +0x862
github.com/spf13/cobra.(*Command).ExecuteC(0x4945c00)
	/root/gowork/pkg/mod/github.com/spf13/cobra@v1.6.1/command.go:1044 +0x3bd
github.com/spf13/cobra.(*Command).Execute(...)
	/root/gowork/pkg/mod/github.com/spf13/cobra@v1.6.1/command.go:968
github.com/labring/sealos/cmd/sealos/cmd.Execute()
	/root/tmp/sealos/cmd/sealos/cmd/root.go:46 +0x25
main.main()
	/root/tmp/sealos/cmd/sealos/main.go:27 +0x29
root@lin-master:/home/ubuntu# sealos add --nodes <IP_ADDRESS>
Error: host <IP_ADDRESS>:22 already joined
host <IP_ADDRESS>:22 already joined
root@lin-master:/home/ubuntu# kubectl get nodes
NAME         STATUS   ROLES           AGE    VERSION
lin-master   Ready    control-plane   132m   v1.24.0

why this happen？
What is the expected behavior?
succeed to add nodes
What do you see instead?
add failure(panic)；
repeatly add shows that already joined；
but 'kubectl get nodes' shows that no new nodes added.
Operating environment
- Sealos version:main
- Docker version:
- Kubernetes version:
- Operating system:amd64
- Runtime environment:
- Cluster size:
- Additional information:

Additional information
No response

Already fixed in the latest main branch.

👌i retry and succeed to add nodes. but why will this cause panic happen？

👌i retry and succeed to add nodes. but why will this cause panic happen？

it's a 🐛 by mistake. ):

You can test it again. This problem was fixed yesterday.


Is it possible to add custom javascript in logtrail?

Hi!!! This plugin is really useful to me. Thanks.
Then I have 1 question.
I want to add some javascript code for UI data representation.
Do you have any way to do this?

Hi, You need dev env to adjust the code in logtrail.

setup kibana dev env - https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#setting-up-your-development-environment
setup plugin dev env and clone logtrail source code - https://www.elastic.co/guide/en/kibana/current/development-plugin-resources.html - you need to clone the logtrail repo inside plugins dir of kibana
modify logtrail code and test
build a custom version of logtrail

Thanks your reply.
One more question.
Do you have any way to run logtrail without kibana?

No. Logtrail is developed to be Kibana plugin and it has a lot of dependency on Kibana API.

Okay. thanks!!!!


[move-only] Enable the move-only address transform and a small additional fix

This enables the full move only address transform. I was waiting for 525ba8c07bf2a48fc104a6589e0d007ec4da8a69 to land before landing this.
I also discovered a small problem around simple assignment when writing tests for this. (I thought that let _ = x and _ = x were codegened the same... but they are not).

@swift-ci test

@swift-ci Please Build Toolchain macOS Platform

@swift-ci test

@swift-ci Please Build Toolchain macOS Platform


Update dependencies

This PR is a temporary fix to make the CI works with Prometheus. It also removes matrix-current from the dependencies as it is a git submodule now.

You shouldn't remove the dependency on matrix_current, if we're pinning the submodule as suggested in https://github.com/ocurrent/ocaml-ci/pull/476.


Invalid tag modification with disused:fire_hydrant

OSMCha report "Invalid tag modification" for changeset 66797578.
disused: prefix is valid for emergency=fire_hydrant according to the wiki.
PS: Also other Lifecycle prefix are valid (and some are used at least by OSM Hydrant V2)
proposed, planned, construction, disused, abandoned, demolished, historic

"building" --> "demolished:building" still triggers "Invalid tag modification"

It seems all the lifecycle prefixes are not supported. razed:building=* also triggers this warning.


most of the time tags not getting added when click on the search list.

hi,
most of the time tags not getting added when click on the search list. this issue can be seen even in the demo site (http://daniel-zahariev.github.com/jquery-textntags). plz resolve.

hi,
i found a fix for it.. will update soon

rameezrami can you update us about your fix? I am noticing the same problem

looks like his fix is here: https://github.com/rameezrami/textntag

Thanks @StefanoBruni.


Add missing parameters and escape hypens as minus

-A, -vvv and -V were missing
Precision on -t
Escape hyphen as minus (old versions of groff)

released, thanks!


Refactoring of the sendActivationEmail so that we can send another em…

…ail with a new activation link.

🍰 Pullrequest

Issues

fixes #1196

Todo

Backend

[X] Create a mutation to resendActivationEmail

mutation {
<EMAIL_ADDRESS>}

Frontend

[ ] Implement button on /Thx/login that sends the resendActionEmail mutation to apollo. (Maybe we need to change the page on which we do this.)

Admin

[ ] Add resend button to UserTable or its entries that sends the resendActionEmail mutation to apollo

Has been merge #1202


NTR: positive regulation of cobalamin metabolic process

positive regulation of cobalamin metabolic process
Definition: Any process that increases the frequency, rate or extent of the chemical reactions and pathways involving cobalamin (vitamin B12), a water-soluble vitamin characterized by possession of a corrin nucleus containing a cobalt atom.
Parent: GO:0106064 regulation of cobalamin metabolic process

Using the PMID for parent term. Please supply reference def for use?

PMID:29056341

ok, same ref as parent term fine


Update deny-full-text-permissions-transact-sql.md

@AssafFraenkel : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Docs Build status updates of commit 490e70f:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/t-sql/statements/deny-full-text-permissions-transact-sql.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

@WilliamDAssafMSFT
Can you review this PR?
IMPORTANT: When this content is ready to merge, you must add #sign-off in a comment or the approval may get overlooked.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

Pulling to private repo

Docs Build status updates of commit 490e70f:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/t-sql/statements/deny-full-text-permissions-transact-sql.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Segmentation fault v1.4.0

Well, v1.4.0 was compiled in Linux and is triggering this error. Weird, when I compile the binary from Windows works.
Happens with Linux and Darwin (macOS) binaries.

Caused by file transfer from Linux Server used to build to Deployment host.
Issue will be closed after re-upload the files to https://dixer.stgo.do/dl

Fixed without any changes, only re-uploading the files with new internal process to avoid this again.


No dashboards are active for the current data set.

It succeed at the first time, and when I run the program the second time, the page show nothing but "No dashboards are active for the current data set...." after opening the page.

I have solved the problem.

@Jane233 how did you solve it?


Hook for plugins to execute cli commands locally

Note: This issue serves as a tracker for a project I am working on for my company.
My company is developing backstage-hook to allow plugins to execute commands locally on the developer their machine.
This will help us in prototyping plugins at high speed. We don't have to worry about security (you explicitly approve commands), authentication or API management.
Please see the project linked above for more information. I'm looking forward to your inputs.

I did a similar experiment with a NodeJS bridge between a website and local commands.

The Website

This would be the backstage plug-in as you've suggested. Backstage could connect to a localhost API with configuration settings provided by the engineer.

Cross-Platform CLI

Built on NodeJS and the open-source  project from Heroku, the CLI offered a number of helpful developer commands with the support of an plug-in ecosystem. The engineer could then start a hosted API to their local machine.
Once started, the engineer could configure the website to (securely) connect to their localhost API and authorize commands. Automation then extends to every command available on the machine.
My implementation didn't have the per-command authorization that you provided in your go implementation.
Since Backstage is written in NodeJS, I wonder if engineers wouldn't benefit from also having a CLI and the localhost API written in NodeJS to simplify tooling while still supporting commands from many technologies?
I think this is a great plug-in idea that also creates opportunities for a much richer, integrated engineer experience that connects local machines to everything else.
I'd be happy to code up a simple PoC in NodeJS again.

Feel free to also code a nodejs implementation: If done correctly, this should all be interchangeable from the users perspective :)
With that I mean that there could be a single "action executor" plugin, and both of our implementations could deal with the ''local_command" action.

I'm moving forward with the go implementation nontheless. Within tcorp we are likely going to use our ERP (business central) as a frontend instead of Backstage for now (company policy is to integrate internal tools in the ERP, which I was about to violate), and the hook will be used for that as well (Swapping out backstage for the ERP is trivial in my design).

Recommendations for your implementation:

make the frontend modular (take a look at my UI code if you need a place to get started), this will make upgrading from a cli to an actual frontend trivial
Abstract away from only dealing with 'command' actions and allow different types of actions to be dealt with in the future as well.
Authorization is a must of course (each command could be authorized, or you could keep a memory like I do, that way you can 'always authorize' read commands)
Do origin checking: The way I do this is that backstage requests a token when it first connects with the hook, the token is granted when this request is approved by the user in the hook's frontend (command line)
Keep dependencies to a minimum for auditability (my hook has 0 external dependencies)


chore: move graph animations to UI thread

https://github.com/Shopify/react-native-skia/pull/1341 made possible to use Reanimated Values directly, is now possible to run animations fully on UI thread (Skia runs them only partially on UI thread).

Gesture is now super fast and don't lag behind finger if you swipe really really fast
Sadly onPointSelected callback still can lag behind

TODO:

[x] Update example app RN version and test it there (now it's tested only in my app)

LGTM! 🚀 Thanks for a great PR. This is a really good performance improvement
Needed to bump react-native version, but this PR was a good opportunity, as we were way behind the current version.

I still need to fix the android build of the example app, but the rest works fine!

@chrispader please also bump Skia to latest version because there was bug that randomly crashed app when it was used in combination with Reanimated https://github.com/Shopify/react-native-skia/issues/1517

I hope this also fixes a weird bug with the graph not animating between data changes. I was going create an issue but will wait for this update first.

Fixed the build for android, will merge this now.
Thanks to everybody who contributed on this change! 🚀🥳 @Nodonisko @lewiscasewell

very nice. We use similar code on our apps and it seems to work great!

@wcandillon The animation of graph line it's still done using Skia animations because I am not sure how to animate SkPath using reanimated. Can you hint me how to do that?

yes this would be the source of truth at the moment: https://github.com/Shopify/react-native-skia/blob/main/example/src/Examples/Wallet/Wallet.tsx#L34


Report in HTML format.

Is there any way if we can generate report in HTML format? Or even with lcov or txt format, I can copy data  in tabular format like below. I want to upload this file in artefacts.

I saw https://github.com/mattpolzin/swift-codecov-action is doing it, but it is covering tests files in calculation.

Hey!
You can use the generated lcov.info file with another GH action that generates the HTML for you.


Namespace imports are incompatible with verbatimModuleSyntax

Describe the bug
If verbatimModuleSyntax is set to true in tsconfig.json, namespace imports would crash the whole app. For example:
import { JSX } from "solid-js";

I am aware that this is more like an issue on TypeScript side, and I do find a relevant issue #52461 there. In this issue, TypeScript members suggest a particular way to export namespaces, and the failure of other ways is an expected behavior.
Currently, I can solve this by turning off verbatimModuleSyntax to stop my app from crashing. But I'm wondering if this can be avoided on SolidJS side? That is, modifying the style in which namespaces are exported, so that they can become compatible with verbatimModuleSyntax.
Your Example Website or App
https://codesandbox.io/p/devbox/importing-jsx-with-tsconfig-verbatimmodulesyntax-62pnqn
Steps to Reproduce the Bug or Issue

The app is functioning normally.
Import JSX on line 1: import { createSignal, JSX } from "solid-js";.
Refresh the page.
The app crashes.

Expected behavior
Namespace imports should work along well with "verbatimModuleSyntax": true.
Screenshots or Videos

Platform

OS: Linux (CodeSandbox Devbox)
Browser: Microsoft Edge (CodeSandbox Devbox)
Version: 1.8.17

Additional context
Log:
11:39:11 PM [vite] Error when evaluating SSR module /home/mrcaidev/cinema/src/routes/index.tsx?pick=default&pick=$css: failed to import "solid-js"
|- SyntaxError: [vite] The requested module 'solid-js' does not provide an export named 'JSX'
    at analyzeImportedModDifference (file:///home/mrcaidev/cinema/node_modules/.pnpm/vite@5.3.1_@types+node@20.14.2_terser@5.31.1/node_modules/vite/dist/node/chunks/dep-BcXSligG.js:52490:15)
    at nodeImport (file:///home/mrcaidev/cinema/node_modules/.pnpm/vite@5.3.1_@types+node@20.14.2_terser@5.31.1/node_modules/vite/dist/node/chunks/dep-BcXSligG.js:53497:5)
    at async ssrImport (file:///home/mrcaidev/cinema/node_modules/.pnpm/vite@5.3.1_@types+node@20.14.2_terser@5.31.1/node_modules/vite/dist/node/chunks/dep-BcXSligG.js:53349:16)
    at async eval (/home/mrcaidev/cinema/src/components/ui/button.tsx:5:31)
    at async instantiateModule (file:///home/mrcaidev/cinema/node_modules/.pnpm/vite@5.3.1_@types+node@20.14.2_terser@5.31.1/node_modules/vite/dist/node/chunks/dep-BcXSligG.js:53408:5)

I'm open to ideas. I'm not sure I understand what they are trying to say in the TS issue. Admittedly my understanding of TS is very limited.

The linked typescript issue is unrelated, verbatimModuleSyntax means that any imports you write are kept as is, irrespective of whether they're being used as a runtime value or not. The namespace JSX doesn't exist at runtime, so it should be imported with a type prefix.

Yeah JSX is just a type for us because we don't use the standard TS JSX transform. Adding the type prefix does seem to work @mrcaidev. Am I missing any other part of the issue or should we consider this done?

No problem. Thank you all!


datastore: loading nested structs is broken

In constructing the codec for loading struct properties from datastore, datastore.getStructCodecLocked() populates a map structCodec.byName with the names of the fields from that struct.  When one of those fields is another struct, it instead recurses into itself and populates .byName with names of the form OuterFieldName.InnerFieldName (it does not insert the name of the inner struct field).  All that seems fine, except that when the codec is actually called by propertyLoader.loadOneElement(), it expects to find an entry whose name corresponds to the properties returned by datastore -- which will, in the case of the struct field, be the name of the struct field itself, that was never populated.  This causes client.GetAll() and iterator.Next() to fail with "no such struct field: OuterFieldName" errors -- extra misleading, because the outer field name actually did exist.
I've noticed this with code approximately like the following; the entities, which were originally populated in datastore via the Go appengine SDK's datastore package, have a definition along these lines:
type StoredEntity struct {
  UnrelatedField string
  Location appengine.Location
}

The struct codec's byName field gets populated with appengine.Location's own fields, hence Location.Lng and Location.Lat, but not Location, and the fetch fails (if Location is changed in the client code to some other type, like int, the load succeeds, albeit with a zero value for Location).

Experimenting some more I think I see the surrounding context -- this problem is triggered by reading entities containing nested structs (or at least the appengine.GeoPoint struct, which is a recognized property in the AE datastore) that were written via the Go appengine SDK.  In the StoredEntity example above, the Location field will be named 'Location' as written via the SDK and viewed through the production entity viewer, and cannot be read via gcloud-golang.  If it were written by gcloud-golang, it would be stored separately as Location.Lat and Location.Lng properties and can be read by gcloud-golang, but not by code compiled against the SDK.
This is going to make migrating live services between the two APIs a challenge.

See #46 – support for the geo point will be coming very shortly, and should fix this issue for you.

Can we get a notification when it's supported? Just doesn't want to miss it out since it's not mentioned on the readme page.

Any update here?

The blocking issue #46 has been fixed now, so this should be resolved.

Is this already released or not yet? I just did a local test and seems like still not working on my side.

@cnbuff410 it is released, did you follow through and read the attached issue?
I don't really know what your local test was trying to do, so I'm not really sure in why it might be failing.

My local test is just to load a dataset from datastore with GeoPoint in the struct. I get exactly same error as this issue:
https://github.com/GoogleCloudPlatform/gcloud-golang/issues/187

The following test case works as expected:
func TestGeoPoint(t *testing.T) {
	if testing.Short() {
		t.Skip("Integration tests skipped in short mode")
	}
	ctx := context.Background()
	client := newClient(ctx, t)
	defer client.Close()

	type Outer struct {
		A int
		B GeoPoint
	}
	outer := &Outer{
		A: 12,
		B: GeoPoint{12.5, 25.0},
	}

	key := NewKey(ctx, "GeoPoint", "GeoPoint"+suffix, 0, nil)
	if _, err := client.Put(ctx, key, outer); err != nil {
		t.Fatalf("client.Put: %v", err)
	}
	defer func() {
		if err := client.Delete(ctx, key); err != nil {
			t.Fatalf("client.Delete: %v", err)
		}
	}()

	var got Outer
	if err := client.Get(ctx, key, &got); err != nil {
		t.Fatalf("client.Get: %v", err)
	}
	if !reflect.DeepEqual(got, *outer) {
		t.Errorf("Geopoint didn't survive the trip.\ngot:  %v\nwant: %v", got, outer)
	}
}

You'll need to be more specific about what you're doing. Note that you need to use the GeoPoint provided by this datastore package, and not appengine.GeoPoint.

You are right, the GeoPoint from different package was the issue. Thanks a lot!


fix: fastify deprecated routerPath property

Fix https://github.com/ts-rest/ts-rest/issues/392

Any progress on this?

I am waiting for a review.
In the meantime, I patched the library on my project using pnpm patch with the same fix.

Ok, I have just rebased my main branch.

@btravers mind syncing with main branch and checking out if the failed tests are related?

@michaelangeloio I've just sync my branch

I add a new commit, routerPath does not exist anymore.


Inline Nested Blocks

Hi, is there a way I could show a move block within repeat block inline? Thanks!

I'm sorry, I don't understand the question. Could you explain it a bit more? :)

hi! apologies for the late feedback.
For example, I wanna show

How do I write it in html? This doesn't seem to work
repeat ( 10) move (10) steps

You want something like this:

repeat (10)
  move (10) steps
end

and then


Add Winget Releaser workflow

This action automatically generates manifests for WinGet Community Repository (microsoft/winget-pkgs) and submits them.
Before merging this:

Add a PAT with public_repo scope as a repository secret named WINGET_TOKEN (or rename the secret name in the workflow).

Fork https://github.com/microsoft/winget-pkgs under @MicaForEveryone. The action will use that fork for making a branch and creating a PR with the upstream winget-pkgs repository on every release.
Make sure the PAT owner has signed the Contributor License Agreement for winget-pkgs.

If you would like to read about this action further, the documentation is here, and the source code is here.
If you want to see an example of a PR created using this action, see microsoft/winget-pkgs/pulls (Pull request has been automatically created using 🛫 WinGet Releaser).

@xmine64 you need to publish releases using a personal access token (PAT) since when the release is published by github-actions:

When you use the repository's GITHUB_TOKEN to perform tasks, events triggered by the GITHUB_TOKEN will not create a new workflow run. This prevents you from accidentally creating recursive workflow runs. For example, if a workflow run pushes code using the repository's GITHUB_TOKEN, a new workflow will not run even when the repository contains a workflow configured to run when push events occur. For more information, see "Authenticating with the GITHUB_TOKEN."

Source: https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow
This won't trigger the winget workflow:

@vedantmgoyal2009 https://github.com/PolyMC/PolyMC uses the GitHub token to create releases, and Winget Releaser works. What's the difference with this one?

For example, if a workflow run pushes code using the repository's GITHUB_TOKEN, a new workflow will not run even when the repository contains a workflow configured to run when push events occur.

Makes sense, thanks to mention that. I'll test for next release and if it didn't work I'll merge winget releaser workflow and publish workflow.

PolyMC have draft releases initially and they are published manually. But here, I suppose it is being published directly.

Oh ok, how about https://github.com/neovim/neovim? They don't do draft releases, do they?

I wasn't able to understand their workflow but I'll keep watching the next release to see of it works or not.

The relevant code is here. gh release create is used to create a release and the --draft flag is not specified.

For example, if a workflow run pushes code using the repository's GITHUB_TOKEN, a new workflow will not run even when the repository contains a workflow configured to run when push events occur.

Makes sense, thanks to mention that. I'll test for next release and if it didn't work I'll merge winget releaser workflow and publish workflow.

@xmine64 Please see #112


[v3.29] fix migration

Description

Backport change to embed CRDs in libcalico-go automatically (to avoid omissions in future).
Fix that tiers weren't migrated.
Add tests to verify that all resource types are covered.
Clean up unused resource names. Fix formatting.

Related issues/PRs

CORE-10796
CI-1658
Pick of #9297
Pick of #9493
Todos

[ ] Tests
[ ] Documentation
[ ] Release note

Release Note

Fix that the new tiers resource was omitted from etcd->Kubernetes migration.

Reminder for the reviewer
Make sure that this PR has the correct labels and milestone set.
Every PR needs one docs-* label.

docs-pr-required: This change requires a change to the documentation that has not been completed yet.
docs-completed: This change has all necessary documentation completed.
docs-not-required: This change has no user-facing impact and requires no docs.

Every PR needs one release-note-* label.

release-note-required: This PR has user-facing changes. Most PRs should have this label.
release-note-not-required: This PR has no user-facing changes.

Other optional labels:

cherry-pick-candidate: This PR should be cherry-picked to an earlier release. For bug fixes only.
needs-operator-pr: This PR is related to install and requires a corresponding change to the operator.

CI failure (timeout in cni-plugin windows test teardown) is unrelated to these changes. Force-merging.


Open or close projects

Issue Type: Feature Request
Hello,
I would like to close or open projects in a workspace like the Eclipse IDE, because I have many microservices in projects and sometimes I use 3 or less of them. I think it will be easy to see the project (it can appear in the project as prioritized) and the search feature can only be searched in the open project (it is more practical and the search feature can have the search flag only in open projects).
Best regards.
VS Code version: Code 1.42.1 (c47d83b293181d9be64f27ff093689e8e7aed054, 2020-02-11T14:45:59.656Z)
OS version: Windows_NT x64 10.0.18362

There are already requests like this thus closing as duplicate and you can search through our issues


[nsync] create a new port

What does your PR fix?
This is a rework of #7614
Triplet support (WIP)
The library's CMakeLists checks Windows, Darwin, Linux, FreeBSD, etc. And it seems there is no hack for each platform.
Currently working on Windows. Failure in the other platforms will be fixed in the next commits.
For Windows,

There is no __declspec(dllexport) in the source code. IMO it intends to be STATIC.

Does your PR follow the maintainer guide?
Yes. Wish for any kind of feedback :)

I just saw the build log for x86-windows triplet. I can't get the meaning of the message. Any guide for this?
2021-01-17T16:49:54.0868362Z Found the following errors:
2021-01-17T16:49:54.0868627Z Error: While validating port nsync.
2021-01-17T16:49:54.0868972Z        Missing expected versions file at: C:\a\1\s\port_versions\n-\nsync.json
2021-01-17T16:49:54.0869295Z        Run:
2021-01-17T16:49:54.0869449Z
2021-01-17T16:49:54.0869651Z            vcpkg x-add-version nsync
2021-01-17T16:49:54.0869846Z
2021-01-17T16:49:54.0870044Z        to create the versions file.
2021-01-17T16:49:54.0870224Z
2021-01-17T16:49:54.0870471Z To attempt to resolve all errors at once, run:
2021-01-17T16:49:54.0870686Z
2021-01-17T16:49:54.0870874Z     vcpkg x-add-version --all
2021-01-17T16:49:54.0871053Z
2021-01-17T16:49:54.2201704Z ##[error]PowerShell exited with code '1'.

I just saw the build log for x86-windows triplet. I can't get the meaning of the message. Any guide for this?
2021-01-17T16:49:54.0868362Z Found the following errors:
2021-01-17T16:49:54.0868627Z Error: While validating port nsync.
2021-01-17T16:49:54.0868972Z        Missing expected versions file at: C:\a\1\s\port_versions\n-\nsync.json
2021-01-17T16:49:54.0869295Z        Run:
2021-01-17T16:49:54.0869449Z
2021-01-17T16:49:54.0869651Z            vcpkg x-add-version nsync
2021-01-17T16:49:54.0869846Z
2021-01-17T16:49:54.0870044Z        to create the versions file.
2021-01-17T16:49:54.0870224Z
2021-01-17T16:49:54.0870471Z To attempt to resolve all errors at once, run:
2021-01-17T16:49:54.0870686Z
2021-01-17T16:49:54.0870874Z     vcpkg x-add-version --all
2021-01-17T16:49:54.0871053Z
2021-01-17T16:49:54.2201704Z ##[error]PowerShell exited with code '1'.

LGTM now, thanks for your PR @luncliff.

LGTM now, thanks for your PR @luncliff.