SharedPreferences  edit() 或者 putString时报错  请大神帮忙看看，谢谢

上日志
JNIEnv->FindClass(com/xingin/tiny/internal/Hybrid) was called from<EMAIL_ADDRESS>JNIEnv->RegisterNatives(com/xingin/tiny/internal/Hybrid, unidbg@0xbffff700, 1) was called from<EMAIL_ADDRESS>RegisterNative(com/xingin/tiny/internal/Hybrid, callNative(I[Ljava/lang/Object;)Ljava/lang/Object<EMAIL_ADDRESS>JNIEnv->FindClass(android/content/Intent) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class android/content/Intent) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/Intent.<init>(Ljava/lang/String;)V) => 0xc14c8f0a was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/Intent.getIntExtra(Ljava/lang/String;I)I) => 0xddd1beeb was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/Intent.getBooleanExtra(Ljava/lang/String;Z)Z) => 0xd9395d74 was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/Intent.addCategory(Ljava/lang/String;)Landroid/content/Intent;) => 0xffb4b930 was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/content/Context) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class android/content/Context) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/Context.getPackageManager()Landroid/content/pm/PackageManager;) => 0x3acc78f0 was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/Context.getContentResolver()Landroid/content/ContentResolver;) => 0x3fe770ea was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/Context.getSystemService(Ljava/lang/String;)Ljava/lang/Object;) => 0x545bcf2d was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/Context.getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;) => 0xa0a12d1f was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/Context.checkPermission(Ljava/lang/String;II)I) => 0x9daa2205 was called from<EMAIL_ADDRESS>JNIEnv->FindClass(com/xingin/tiny/internal/Hybrid) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class com/xingin/tiny/internal/Hybrid) was called from<EMAIL_ADDRESS>JNIEnv->GetStaticMethodID(com/xingin/tiny/internal/Hybrid.callJava(I[Ljava/lang/Object;)Ljava/lang/Object;) => 0x5d3c8a71 was called from<EMAIL_ADDRESS>JNIEnv->FindClass(java/lang/Class) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class java/lang/Class) was called from<EMAIL_ADDRESS>JNIEnv->FindClass(java/lang/Object) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class java/lang/Object) was called from<EMAIL_ADDRESS>JNIEnv->FindClass(java/util/Collection) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(java/util/Collection.iterator()Ljava/util/Iterator;) => 0xecb22abf was called from<EMAIL_ADDRESS>JNIEnv->FindClass(java/util/Iterator) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(java/util/Iterator.hasNext()Z) => 0x74f5adeb was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(java/util/Iterator.next()Ljava/lang/Object;) => 0xc9be0fcf was called from<EMAIL_ADDRESS>JNIEnv->FindClass(java/util/Map) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class java/util/Map) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(java/util/Map.size()I) => 0x95e5057a was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(java/util/Map.get(Ljava/lang/Object;)Ljava/lang/Object;) => 0x7f03ab0a was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(java/util/Map.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;) => 0x6fb34d67 was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(java/util/Map.remove(Ljava/lang/Object;)Ljava/lang/Object;) => 0xc7b2e6f2 was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(java/util/Map.keySet()Ljava/util/Set;) => 0x24c91734 was called from<EMAIL_ADDRESS>JNIEnv->FindClass(java/util/HashMap) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class java/util/HashMap) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(java/util/HashMap.<init>()V) => 0xa7b3cd64 was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/content/pm/PackageInfo) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class android/content/pm/PackageInfo) was called from<EMAIL_ADDRESS>JNIEnv->GetFieldID(android/content/pm/PackageInfo.packageName Ljava/lang/String;) => 0x20518ffc was called from<EMAIL_ADDRESS>JNIEnv->GetFieldID(android/content/pm/PackageInfo.versionName Ljava/lang/String;) => 0xbcc0232a was called from<EMAIL_ADDRESS>JNIEnv->GetFieldID(android/content/pm/PackageInfo.firstInstallTime J) => 0x215b0bd1 was called from<EMAIL_ADDRESS>JNIEnv->GetFieldID(android/content/pm/PackageInfo.lastUpdateTime J) => 0xb7c07d45 was called from<EMAIL_ADDRESS>JNIEnv->GetFieldID(android/content/pm/PackageInfo.versionCode I) => 0x41c3e70b was called from<EMAIL_ADDRESS>JNIEnv->GetFieldID(android/content/pm/PackageInfo.applicationInfo Landroid/content/pm/ApplicationInfo;) => 0xb287dbb2 was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/content/pm/PackageManager) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/pm/PackageManager.getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;) => 0x3bca8377 was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/pm/PackageManager.queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;) => 0x4d4c5819 was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/pm/PackageManager.getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String;) => 0xed3a354c was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/content/pm/ApplicationInfo) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class android/content/pm/ApplicationInfo) was called from<EMAIL_ADDRESS>JNIEnv->GetFieldID(android/content/pm/ApplicationInfo.targetSdkVersion I) => 0x74a55c91 was called from<EMAIL_ADDRESS>JNIEnv->GetFieldID(android/content/pm/ApplicationInfo.sourceDir Ljava/lang/String;) => 0x304a6a5 was called from<EMAIL_ADDRESS>JNIEnv->GetFieldID(android/content/pm/ApplicationInfo.dataDir Ljava/lang/String;) => 0xef83d1b4 was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/pm/ApplicationInfo.loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;) => 0xe6b638b6 was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/provider/Settings$Global) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class android/provider/Settings$Global) was called from<EMAIL_ADDRESS>JNIEnv->GetStaticMethodID(android/provider/Settings$Global.getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;) => 0x11d9f943 was called from<EMAIL_ADDRESS>JNIEnv->GetStaticMethodID(android/provider/Settings$Global.getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I) => 0x49fead70 was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/provider/Settings$Secure) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class android/provider/Settings$Secure) was called from<EMAIL_ADDRESS>JNIEnv->GetStaticMethodID(android/provider/Settings$Secure.getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;) => 0x3efce417 was called from<EMAIL_ADDRESS>JNIEnv->GetStaticMethodID(android/provider/Settings$Secure.getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I) => 0x235c4a44 was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/provider/Settings$System) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class android/provider/Settings$System) was called from<EMAIL_ADDRESS>JNIEnv->GetStaticMethodID(android/provider/Settings$System.getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;) => 0x1798fccf was called from<EMAIL_ADDRESS>JNIEnv->GetStaticMethodID(android/provider/Settings$System.getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I) => 0xd541eefc was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/telephony/TelephonyManager) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class android/telephony/TelephonyManager) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/telephony/TelephonyManager.getSimState()I) => 0xbb348335 was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/telephony/TelephonyManager.getSimOperator()Ljava/lang/String;) => 0xa88ed76d was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/telephony/TelephonyManager.getSimOperatorName()Ljava/lang/String;) => 0x369d2198 was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/telephony/TelephonyManager.getImei(I)Ljava/lang/String;) => 0xaaca4c31 was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/content/SharedPreferences) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class android/content/SharedPreferences) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/SharedPreferences.getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;) => 0x2c5b4190 was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/SharedPreferences.edit()Landroid/content/SharedPreferences$Editor;) => 0x5913f014 was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/content/SharedPreferences$Editor) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class android/content/SharedPreferences$Editor) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/SharedPreferences$Editor.putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;) => 0x201e0563 was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/SharedPreferences$Editor.remove(Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;) => 0x2eafa01b was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/content/SharedPreferences$Editor.apply()V) => 0x3434ff8c was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/net/wifi/WifiInfo) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class android/net/wifi/WifiInfo) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/net/wifi/WifiInfo.getSSID()Ljava/lang/String;) => 0x2d3b6000 was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/net/wifi/WifiInfo.getBSSID()Ljava/lang/String;) => 0xffe5450e was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/net/wifi/WifiInfo.getIpAddress()I) => 0x6b0928d5 was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/net/wifi/WifiInfo.getMacAddress()Ljava/lang/String;) => 0x7e5bebca was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/net/wifi/WifiManager) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class android/net/wifi/WifiManager) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/net/wifi/WifiManager.getWifiState()I) => 0xedbe0581 was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/net/wifi/WifiManager.getConnectionInfo()Landroid/net/wifi/WifiInfo;) => 0x6b848ba was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/hardware/SensorManager) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class android/hardware/SensorManager) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/hardware/SensorManager.getSensorList(I)Ljava/util/List;) => 0xcbe7ed08 was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/hardware/Sensor) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class android/hardware/Sensor) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/hardware/Sensor.getName()Ljava/lang/String;) => 0xfc35b75a was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/hardware/Sensor.getType()I) => 0xaee0c2ea was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/hardware/Sensor.getVendor()Ljava/lang/String;) => 0x3e979097 was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/hardware/Sensor.getVersion()I) => 0x38250514 was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/content/pm/ActivityInfo) was called from<EMAIL_ADDRESS>JNIEnv->GetFieldID(android/content/pm/ActivityInfo.packageName Ljava/lang/String;) => 0xde64413d was called from<EMAIL_ADDRESS>JNIEnv->GetFieldID(android/content/pm/ActivityInfo.applicationInfo Landroid/content/pm/ApplicationInfo;) => 0xd8a7b633 was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/content/pm/ResolveInfo) was called from<EMAIL_ADDRESS>JNIEnv->GetFieldID(android/content/pm/ResolveInfo.activityInfo Landroid/content/pm/ActivityInfo;) => 0x5c547120 was called from<EMAIL_ADDRESS>JNIEnv->FindClass(java/lang/CharSequence) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(java/lang/CharSequence.toString()Ljava/lang/String;) => 0x13c3c453 was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/app/ActivityManager) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/app/ActivityManager.getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V) => 0xdb1b58dd was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/app/ActivityManager$MemoryInfo) was called from<EMAIL_ADDRESS>JNIEnv->NewGlobalRef(class android/app/ActivityManager$MemoryInfo) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/app/ActivityManager$MemoryInfo.<init>()V) => 0xcba7b8af was called from<EMAIL_ADDRESS>JNIEnv->GetFieldID(android/app/ActivityManager$MemoryInfo.totalMem J) => 0x4e593b95 was called from<EMAIL_ADDRESS>JNIEnv->GetFieldID(android/app/ActivityManager$MemoryInfo.availMem J) => 0x2c4064ca was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/view/MotionEvent) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/view/MotionEvent.getDeviceId()I) => 0x3daaa60c was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/view/MotionEvent.getEventTime()J) => 0xa8e0edcd was called from<EMAIL_ADDRESS>JNIEnv->FindClass(android/location/Location) was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/location/Location.getLongitude()D) => 0x6a15fe8a was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/location/Location.getLatitude()D) => 0x3fb04981 was called from<EMAIL_ADDRESS>JNIEnv->GetMethodID(android/location/Location.getTime()J) => 0x1e7e9086 was called from<EMAIL_ADDRESS>Find native function Java_com_xingin_tiny_internal_Hybrid_callNative =><EMAIL_ADDRESS>JNIEnv->GetObjectArrayElement(["ECFAAF01", "Guanfang"], 0) => "ECFAAF01" was called from<EMAIL_ADDRESS>JNIEnv->GetObjectArrayElement(["ECFAAF01", "Guanfang"], 1) => "Guanfang" was called from<EMAIL_ADDRESS>JNIEnv->GetStringUtfChars("ECFAAF01") was called from<EMAIL_ADDRESS>JNIEnv->ReleaseStringUTFChars("ECFAAF01") was called from<EMAIL_ADDRESS>JNIEnv->GetStringUtfChars("Guanfang") was called from<EMAIL_ADDRESS>JNIEnv->ReleaseStringUTFChars("Guanfang") was called from<EMAIL_ADDRESS>JNIEnv->CallStaticObjectMethodV(class com/xingin/tiny/internal/Hybrid, callJava(0x0, null) => android.content.Context@179ece50) was called from<EMAIL_ADDRESS>JNIEnv->NewStringUTF("ti.store") was called from<EMAIL_ADDRESS>JNIEnv->CallObjectMethodV(android.content.Context@179ece50, getSharedPreferences("ti.store", 0x0) => android.content.SharedPreferences@3cd3e762) was called from<EMAIL_ADDRESS>JNIEnv->NewStringUTF("launch_count") was called from<EMAIL_ADDRESS>JNIEnv->CallObjectMethodV(android.content.SharedPreferences@3cd3e762, getString("launch_count", null) => "2") was called from<EMAIL_ADDRESS>JNIEnv->GetStringUtfChars("2") was called from<EMAIL_ADDRESS>JNIEnv->ReleaseStringUTFChars("2") was called from<EMAIL_ADDRESS>JNIEnv->CallStaticObjectMethodV(class com/xingin/tiny/internal/Hybrid, callJava(0x0, null) => android.content.Context@179ece50) was called from<EMAIL_ADDRESS>JNIEnv->NewStringUTF("ti.store") was called from<EMAIL_ADDRESS>JNIEnv->CallObjectMethodV(android.content.Context@179ece50, getSharedPreferences("ti.store", 0x0) => android.content.SharedPreferences@3cd3e762) was called from<EMAIL_ADDRESS>android/content/SharedPreferences->edit()Landroid/content/SharedPreferences$Editor;JNIEnv->CallObjectMethodV(android.content.SharedPreferences@3cd3e762, edit() => android.content.SharedPreferences@3cd3e762) was called from<EMAIL_ADDRESS>JNIEnv->NewStringUTF("launch_count") was called from<EMAIL_ADDRESS>JNIEnv->NewStringUTF("3") was called from<EMAIL_ADDRESS>[14:53:13 816]  WARN [com.github.unidbg.linux.ARM32SyscallHandler] (ARM32SyscallHandler:533) - handleInterrupt intno=2, NR=-1073745252, svcNumber=0x11f, PC=unidbg@0xfffe0284, <EMAIL_ADDRESS>syscall=null com.github.unidbg.arm.backend.BackendException: dvmObject=android.content.SharedPreferences@3cd3e762, dvmClass=class android/content/SharedPreferences, jmethodID=unidbg@0x201e0563 	at com.github.unidbg.linux.android.dvm.DalvikVM$32.handle(DalvikVM.java:543) 	at com.github.unidbg.linux.ARM32SyscallHandler.hook(ARM32SyscallHandler.java:132) 	at com.github.unidbg.arm.backend.UnicornBackend$11.hook(UnicornBackend.java:345) 	at unicorn.Unicorn$NewHook.onInterrupt(Unicorn.java:128) 	at unicorn.Unicorn.emu_start(Native Method) 	at com.github.unidbg.arm.backend.UnicornBackend.emu_start(UnicornBackend.java:376) 	at com.github.unidbg.AbstractEmulator.emulate(AbstractEmulator.java:376) 	at com.github.unidbg.thread.Function32.run(Function32.java:39) 	at com.github.unidbg.thread.MainTask.dispatch(MainTask.java:19) 	at com.github.unidbg.thread.UniThreadDispatcher.run(UniThreadDispatcher.java:172) 	at com.github.unidbg.thread.UniThreadDispatcher.runMainForResult(UniThreadDispatcher.java:96) 	at com.github.unidbg.AbstractEmulator.runMainForResult(AbstractEmulator.java:336) 	at com.github.unidbg.arm.AbstractARMEmulator.eFunc(AbstractARMEmulator.java:229) 	at com.github.unidbg.Module.emulateFunction(Module.java:163) 	at com.github.unidbg.linux.android.dvm.DvmObject.callJniMethod(DvmObject.java:135) 	at com.github.unidbg.linux.android.dvm.DvmClass.callStaticJniMethodObject(DvmClass.java:292) 	at com.xhs.AndroidTest.<init>(AndroidTest.java:104) 	at com.xhs.AndroidTest.main(AndroidTest.java:48) [14:53:17 805]  WARN [com.github.unidbg.AbstractEmulator] (AbstractEmulator:416) - emulate<EMAIL_ADDRESS>exception sp=unidbg@0xbffff288, msg=dvmObject=android.content.SharedPreferences@3cd3e762, dvmClass=class android/content/SharedPreferences, jmethodID=unidbg@0x201e0563, offset=83398ms Find native function Java_com_xingin_tiny_internal_Hybrid_callNative =><EMAIL_ADDRESS>Find native function Java_com_xingin_tiny_internal_Hybrid_callNative =><EMAIL_ADDRESS>调试发现
  DvmClass dvmClass = dvmObject == null ? null : dvmObject.getObjectType();
  DvmMethod dvmMethod = dvmClass == null ? null : dvmClass.getMethod(jmethodID.toIntPeer());

dvmMethod ==null 了
ndroid/content/SharedPreferences->edit()Landroid/content/SharedPreferences$Editor;JNIEnv->CallObjectMethodV(android.content.SharedPreferences@3cd3e762, edit() => android.content.SharedPreferences@3cd3e762) was called from RWX@0x4005fdc7
这个与putString methodID 相同了？ 请大神看看。感谢

解決了，謝謝


Enable Plugin Functionality Without a Time Column

Is it possible work with this plugin without a timestamp column? I have to map the current status and i only recibe the value without timestamp column. Please, You can help me?

could you press 'Debugging Data' and attach here the raw and enriched data that gets logged in the console? That way I'll get a better understanding of the data form you have.

without an example input there's no easy way to progress this so closing out.


fix: input mixin error out on missing type

If the type is not provided to input, Roll20 doesn't detect the attribute and it is not saved. In that case, throw an error during PUG compilation.

Merging into Dev branch for 2.3.0


First version of Storage Accounting

Add first version of cinder extractor for storage records
WIP: tests
**Type of change
Please delete options that are not relevant.

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

will you incorporate also changes from https://github.com/aidaph/caso/pull/1 ?

This won't produce records for compute with wall or cpu duration, so it's broken.
It seems missing here: https://github.com/IFCA/caso/pull/96/files#diff-eceed361b7d639f17308539c3dba7cdcfab750aa5609b3bcaf7b1d10ffe2f608R134

Any chance this gets merged soon?


Enhancement: File Data Connector

REMEMBER, BE SMART!
S: Specific
M: Measurable
A: Achievable
R: Relevant
T: Time-Bound
Goal-State/What/Result
A clear and concise description of what the enhancement is and the target goal-state.
Why/Purpose
Clear and concise answer to why this should be done now.
By When
A target date for done-done completion of the entire enhancement.
Issue/Spec written and reviewed:
Done-Done:
Done-Done

[ ] First Principles Driven
[ ] The Algorithm
[ ] PM/Design Review
[ ] UX Review
[ ] Threat Model / Security Review
[ ] Tests
[ ] Documentation
[ ] Samples/Quickstarts/Tutorials
[ ] Release Notes

The Algorithm

[ ] Every requirement questioned?
[ ] Delete (Scope) any part you can.
[ ] Simplify.
[ ] Break down into smaller iterations/milestones.
[ ] Opportunities for automation.

Spec
Basic specification of the enhancement.
How/MAP
A clear and concise plan of how this should be implemented.
Implementation (issues)

QA

UX, documentation, etc

Documentation complete, UX updated to include relative paths. Samples and docs added. This was released in v0.18.0-beta.


Add generated docs for sdc-0.1.0-beta03, engine-0.1.0-beta01, workflow-0.1.0-alpha01

IMPORTANT: All PRs must be linked to an issue (except for extremely trivial and straightforward changes).
Fixes #1457
Description
Generated reference docs for each library's latest released version by doing e.g. git checkout tags/sdc-0.1.0-beta03 -b sdc-0.1.0-beta03 and running a gradle task similar to PR #1466 .
Alternative(s) considered
Placing docs into a version-named directory

Pros: Previous docs versions easily available
Cons: More difficult to see diff between versions at release

Type
Documentation
Checklist

[x] I have read and acknowledged the Code of conduct.
[x] I have read the Contributing page.
[x] I have signed the Google Individual CLA, or I am covered by my company's Corporate CLA.
[ ] I have discussed my proposed solution with code owners in the linked issue(s) and we have agreed upon the general approach.
[ ] I have run ./gradlew spotlessApply and ./gradlew spotlessCheck to check my code follows the style guide of this project.
[ ] I have run ./gradlew check and ./gradlew connectedCheck to test my changes locally.
[ ] I have built and run the demo app(s) to verify my change fixes the issue and/or does not break the demo app(s).

Can you please document the gradle task to run to generate the docs?

Catching back up after vacation.
@jingtang10

How would you like the gradle tasks documented?
The hyphens are because Java/Kotlin are case-sensitive, and the doc generator converts uppercase characters to -[lower], e.g. A becomes -a. If the thing is in all caps, it turns into a gross filename. I believe the rendered version is fine though. See https://github.com/Kotlin/dokka/issues/2229

Catching back up after vacation.
@jingtang10

How would you like the gradle tasks documented?

When do they need to be run? Each time we make a release? In that case should be documented in our release process.

The hyphens are because Java/Kotlin are case-sensitive, and the doc generator converts uppercase characters to -[lower], e.g. A becomes -a. If the thing is in all caps, it turns into a gross filename. I believe the rendered version is fine though. See Make uppercase-to-lowercase file name conversion configurable Kotlin/dokka#2229

ah ok if this is just a dokka thing and we can't control it's fine.

how can we preview this docs?

When do they need to be run? Each time we make a release? In that case should be documented in our release process.

Correct - I will update the release documentation with instructions after #1466 is merged. I'll also need to regenerate the data capture docs to reflect the values in Releases.kt (datacapture vs data-capture)

Looks like /docs/engine/html/engine is a duplicate of /docs/engine/engine?
sdc and workflow don't have the html/ subdiretory.

Fixed, I must have messed up copying docs around to generate at 3 different tags.


Fix for docs on deepspeed inference

The main issue is that the parameter name did not coincide with the code.
Question: could the deepspeed extra dependency on CUTLASS be baked into the docker image? I could give it a try but I'm wondering if someone has come across issues with that.

Question: could the deepspeed extra dependency on CUTLASS be baked into the docker image? I could give it a try but I'm wondering if someone has come across issues with that.

This patch would do the basic setup (that would still require compilation at first run): https://github.com/josemduarte/openfold/commit/0183be7b1018cc50f337ed33fb9e948436e6f311 .

Good catch on the wrong parameter name! CUTLASS should be installed with the install_third_party_dependencies.sh script though, which is already in the docs (see Step 3).
You're right though that this step is currently missing from the Docker image, we will update that.


Refresh oauth20 helper

#134
Example
client.refreshOAuth20Token(type: .publicClient) { result in
    switch result {
        case .succes(let refresh):
            if refresh.refreshed {
                // If necessary, we will handle the saving process, etc.
                // storeToken(oauth20: refresh.token)
            }
    }
}

let refresh = try await client.refreshOAuth20Token(type: .publicClient, forceRefresh: false)
if refresh.refreshed {
    // If necessary, we will handle the saving process, etc.
    // storeToken(oauth20: refresh.token)
}

Codecov Report

Merging #138 (9df5b4e) into main (70a3c7d) will decrease coverage by 0.10%.
The diff coverage is 60.75%.

@@            Coverage Diff             @@
##             main     #138      +/-   ##
==========================================
- Coverage   80.29%   80.18%   -0.11%
==========================================
  Files         256      256
  Lines        6895     6974      +79
==========================================
+ Hits         5536     5592      +56
- Misses       1359     1382      +23

Impacted Files
Coverage Δ

Sources/TwitterAPIKit/TwitterAPIKitError.swift
28.64% <0.00%> (-4.69%)
:arrow_down:

Sources/TwitterAPIKit/TwitterAPISession.swift
68.88% <66.66%> (-0.16%)
:arrow_down:

Sources/TwitterAPIKit/TwitterAPIClient.swift
82.65% <94.87%> (+13.16%)
:arrow_up:

Sources/TwitterAPIKit/Extensions/Concurrency.swift
95.77% <100.00%> (-4.23%)
:arrow_down:

Sources/TwitterAPIKit/AuthAPI/OAuth20API.swift
25.00% <0.00%> (+18.18%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us.

#135


 All I want to do is compare two strings: int i = bindingListStockHeader.IndexOf(a => a.DisplayString == anItem.Text);
Nevermind. I'll untangle this rocket science eventually.

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

ID: 98316afd-4ee1-399d-aa1a-7897048ab5b4
Version Independent ID: af4b9c9a-90f5-9097-033c-6ee367024091
Content: Compiler Error CS1660
Content Source: docs/csharp/misc/cs1660.md
Product: dotnet-csharp
Technology: csharp-diagnostics
GitHub Login: @BillWagner
Microsoft Alias: wiwagn

We'd like to help. This issue, as written, lacks enough information for us. Without more context of your code, we can't diagnose or fix the issue.
I suggest you edit the description of the bindingListStockHeader`, and include a bit more context on the relevant code.
You may also consider taking the opportunity to phrase your question differently for those of us that do want to help you succeed.


Webpack 2 regression: CLI stats no longer excludes modules from node_modules, etc.

Do you want to request a feature or report a bug?
A bug
What is the current behavior?
The CLI's stats output isn't supposed to list modules from node_modules, etc. This is specified in the docs (https://github.com/webpack/docs/wiki/cli):

Modules are hidden from output by default when they live inside directories called ["node_modules", "bower_components", "jam", "components"]

This works correctly in Webpack 1.x. However, in Webpack 2.2.0, the CLI does incorrectly list entries from node_modules.
REPRO STEPS:

In an empty directory, make a new project by running npm init -y, then npm install --save webpack@beta jquery.
Add a webpack.config.js file containing this minimal build setup that just includes jQuery:

module.exports = {
    output: { filename: '[name].js' },
    entry: 'jquery'
};

Execute webpack

What is the expected behavior?
Expected output:
Hash: 9948f695646693810f81
Version: webpack 2.2.0
Time: 424ms
  Asset    Size  Chunks                    Chunk Names
main.js  270 kB       0  [emitted]  [big]  main

Actual output:
Hash: 9948f695646693810f81
Version: webpack 2.2.0
Time: 424ms
  Asset    Size  Chunks                    Chunk Names
main.js  270 kB       0  [emitted]  [big]  main
   [0] ./~/jquery/dist/jquery.js 267 kB {0} [built]

It doesn't look like a big deal in this minimal repro case, but in a large project where you reference something like Angular 2 that consists of hundreds of modules, having them all listed completely floods the stats output and prevents you from noticing your own modules among the deluge.
Underlying cause
It looks like this bug was introduced in commit<PHONE_NUMBER>e0ed5b601ac523600480afe6b9c111 on this line: https://github.com/webpack/webpack/blame/4220556089e0ed5b601ac523600480afe6b9c111/lib/Stats.js#L72
As you see on that line, it uses requestShortener to change the identity of the module before checking it against excludeModules. But requestShortener replaces /node_modules/ with /~/, so it no longer matches the regexes.
Suggested fix: Remove that line, and check module.resource against excludeModules instead.

see also #4144

see https://github.com/webpack/webpack/pull/4143

fixed in next branch


Lighting window background looks like it grabs part of display

Open the lighting window, the background for the edit/preview of the scene is garbled, looks
like it is grabbing from some screen buffer. I would say whatever is behind it on my display, except that isn't truly the case based on the image.

I've duplicated this only on Linux, with VisIt 3.x, both with mesa-as-gl and with opengl.
Windows OS looks fine.

Scatter plot wizard does this too. I saw it on Ubuntu. The widget must not be getting the current size update from Qt.

I am not seeing this with 3.2.1 on linux running mesa-enabled VisIt.
@brugger1 can you check this from linux-desktop running opengl version of VisIt?

I see it with 3.1.3 (opengl) on kickit, but I don’t see it with 3.2.0 (mesagl) or 3.2.1 (opengl) on kickit.

Perhaps our update to newer Qt from 3.1 to 3.2 fixed it.

Yes, that’s my thought as well. I’m fine with closing this ticket.


Debugging script with Visual Studio Code

Does Electron run on Visual Studio Code ?
If yes, how to setup a simple environment where I can write  Electron script using Visual Studio Code ?
For example I with this Test.js script;
var app = require('app');

process.on('uncaughtException', function(error) {
    console.error("ERROR Exception => " + error.stack);
})

app.on('ready', function() {
    console.log('ready!');
    aksjdflkasjdf(); // Caught Exception
})

But for Visual Studio Code there is an launch.json configuration file. But I don't say how to setup Visual Studio Code ready for Electron work.

There is no way to attach the VS Code debugger to Electron at the moment afaik, you should request it as a feature

NO, there is a way to configure Visual Studio Code to run Electron and attach the debugger in the same process.

Stackoverflow Thread : Debugging Electron-Atom script with Visual Studio Code
My Life for the Code blog (great article) : A Better Way To Launch Electron from Visual Studio Code


Tonejs problem

I found this definition as I want to experiment with web audio;
https://raw.githubusercontent.com/lukephills/Typings-Tone/master/tone.d.ts
But I get the following, I think some of the errors are due to needing web audio swc api. Is there a way to add swc deps, I didn't see any?

Teoti@TEOTI-PC /c/SDKs/JSLibs
$ dts2as --flexHome C:/SDKs/FlexJS_0.6-RC2 --outSWC tonejs.swc tone.d.ts
C:\SDKs\JSLibs\dts2as_generated\src\Tone.as:25
Warning: Incompatible initializer value of type 'int' where 'Function' is expected. An initial value of null will be used instead.
public function extend(child:Function, parent:Function = undefined):void {}
                                                         ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone.as:44
Warning: Incompatible initializer value of type 'int' where 'AudioNode' is expected. An initial value of null will be used instead.
public function receive(channelName:String, input:AudioNode = undefined):Tone { return null; }
                                                              ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\Buffer.as:6
Warning: Incompatible initializer value of type 'int' where 'Function' is expected. An initial value of null will be used instead.
public function Buffer(url:Object = undefined, callback:Function = undefined) {}
                                                                   ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\Buffer.as:25
Warning: Incompatible initializer value of type 'int' where 'Function' is expected. An initial value of null will be used instead.
public function load(url:String, callback:Function = undefined):Buffer { return null; }
                                                     ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\Convolver.as:11
Warning: Incompatible initializer value of type 'int' where 'Function' is expected. An initial value of null will be used instead.
public function load(url:String, callback:Function = undefined):Convolver { return null; }
                                                     ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\Filter.as:6
Warning: Incompatible initializer value of type 'int' where 'String' is expected. An initial value of "0" will be used instead.
public function Filter(freq:Object = undefined, type:String = undefined, rolloff:Number = undefined) {}
                                                              ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\Note.as:12
Warning: Incompatible initializer value of type 'int' where 'Function' is expected. An initial value of null will be used instead.
public function route(channel:Object, callback:Function = undefined):void {}
                                                          ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\Note.as:13
Warning: Incompatible initializer value of type 'int' where 'Function' is expected. An initial value of null will be used instead.
public function unroute(channel:Object, callback:Function = undefined):void {}
                                                            ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\OmniOscillator.as:6
Warning: Incompatible initializer value of type 'int' where 'String' is expected. An initial value of "0" will be used instead.
public function OmniOscillator(frequency:Object = undefined, type:String = undefined) {}
                                                                           ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\Oscillator.as:6
Warning: Incompatible initializer value of type 'int' where 'String' is expected. An initial value of "0" will be used instead.
public function Oscillator(frequency:Object = undefined, type:String = undefined) {}
                                                                       ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\Player.as:6
Warning: Incompatible initializer value of type 'int' where 'Function' is expected. An initial value of null will be used instead.
public function Player(url:Object = undefined, onload:Function = undefined) {}
                                                                 ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\Player.as:30
Warning: Incompatible initializer value of type 'int' where 'Function' is expected. An initial value of null will be used instead.
public function load(url:Object, callback:Function = undefined):Player { return null; }
                                                     ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\PolySynth.as:6
Warning: Incompatible initializer value of type 'int' where 'Function' is expected. An initial value of null will be used instead.
public function PolySynth(voicesAmount:Object = undefined, voice:Function = undefined) {}
                                                                            ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\PolySynth.as:12
Warning: Incompatible initializer value of type 'int' where 'Array' is expected. An initial value of null will be used instead.
public function get(params:Array = undefined):void {}
                                   ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\Sampler.as:22
Warning: Incompatible initializer value of type 'int' where 'String' is expected. An initial value of "0" will be used instead.
public function triggerAttack(sample:String = undefined, time:Object = undefined, velocity:Number = undefined):Sampler { return null; }
                                              ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\Signal.as:9
Error: Type was not found or was not a compile-time constant: Type.
public function get units():Type { return null; }
                            ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\Signal.as:10
Error: Type was not found or was not a compile-time constant: Type.
public function set units(value:Type):void {}
                                ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\Source.as:13
Error: Type was not found or was not a compile-time constant: State.
public function get state():Tone.Source.State { return null; }
                            ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\Source.as:14
Error: Type was not found or was not a compile-time constant: State.
public function set state(value:Tone.Source.State):void {}
                                ^

C:\SDKs\JSLibs\dts2as_generated\src\Tone\Transport.as:34
Warning: Incompatible initializer value of type 'int' where 'String' is expected. An initial value of "0" will be used instead.
public function nextBeat(subdivision:String = undefined):Number { return 0; }
                                              ^

Could not create SWC file. The generated ActionScript contains compile-time errors.

Teoti@TEOTI-PC /c/SDKs/JSLibs
$

It looks like dts2as is having trouble finding Tone.Source.State and Tone.Signal.Type, which are defined in tone.d.ts. It may be how the modules are declared. I'll dig in and figure it out.
I seem to recall that the web audio APIs are defined in TypeScript's standard library. I don't see any errors in the output that refer to those APIs.

ok, if you can figure it out that would be great.

The problem was that I was outputting some interfaces as internal instead of public. I mistakenly thought TypeScript was stricter than it actually is. That's fixed now.
Additionally, I made it so that the warnings are hidden when there's a compile-time error. That removes some of the noise from the output when something goes wrong.
I'll be pushing out a 0.9.0 update in moments!


[Doc] Add zh_cn doc

Is your feature request related to a problem? Please describe.
Add zh_cn doc

Add zh_cn doc in https://github.com/fury-project/fury-sites/issues/28


Move Widgets to individual libraries

Context
After the discussion in the CircuitPython meeting on 2021-04-05, it was discussed that individual widgets will be moved to individual libraries. This will help users find the widgets more easily. The DisplayIO library will keep the layouts configuration and the general helpers.
Modifications
This change will have two types of consequences, in the widget itself, and in the library.
Widget level:

Examples change [Imports]
Change in the widget source file in case using methods stored in init.py

Library level:

Change in the API.rst file [modules]
Change in conf.py [ autodoc]
Change in examples.rst [examples will be moved to a different location]
Change in init.py

Libraries to be moved will be

Annotation
Cartesian
Dial
Flip-input
Icon-animated
Icon_widget
Switch-Round

work will start with widgets not in PR as they are easier to move. After that alphabetical order will be used.
@kmatch98 @FoamyGuy if for any reason you don't want your widget to be moved let me know, or if you want to move the module yourself, please let me know also.
This wil probably raise a new library version as folks would need to rewrite their scripts

I think icon_widget and icon_animated should live together as a family. @FoamyGuy your thoughts?
The others are fine to move into separate libraries.  I appreciate if you can move them to their new home.
Any suggestions on how best to make all the widgets “discoverable” as a group?  How do we ensure folks can easily find all the cool widgets?   (Even I am having trouble keeping all these neat new things in my mind!)

@kmatch98 A new cool and beautiful learning guide from @FoamyGuy :)

@kmatch98 No problem will do, Scott mentioned the possibility the have different variants of the same thing in a library, so _icon and icon_widget as you mentioned could be in just one Icon library if you agree.

Agreed icon_widget and icon_animated can go together.
There is a list in the main displayio learn guide here: https://learn.adafruit.com/circuitpython-display-support-using-displayio/helper-libraries
We could add to that as we get the new libraries created.

First one is in
Color Picker
https://github.com/jposada202020/Adafruit_CircuitPython_DisplayIO_Color_Picker/runs/2274359264
However I am having problems when importing the parent classes when building the docs, I have tested in the board and it works. I have tested both ways of calls, standard
        Widget.__init__(
            self, x=x, y=y, height=image_size, width=image_size, **kwargs, max_size=4
        )
        Control.__init__(self)

and the way kmatch uses in the other widgets without a a good results in building the docs, the message is
    class ColorPicker(Widget, Control): TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
If you folks know a good way to deal with this, help will be appreciate, I will put a ote in discord.

Ongoing changes. Closing here


installscript fails

Hey everybody,
trying to install with the install script as stated in the README fails.
It installs the dependencies, but fails while building simple2d.
It's Debian 8.
What can I do?
Welcome to Simple 2D!
---------------------
[...]
==> Checking for SDL2... yes
==> Checking for SDL2_image... yes
==> Checking for SDL2_mixer... yes
==> Checking for SDL2_ttf... yes

==> Downloading Simple 2D
[...]
==> Unpacking
[...]
==> make

==> Building

mkdir -p build
[...]
cc -std=c11 -fPIC  src/window.c -c -o build/window.o
src/window.c: In function ‘S2D_Show’:
src/window.c:176:61: error: ‘SDL_MouseWheelEvent’ has no member named ‘direction’
               .type = S2D_MOUSE_SCROLL, .direction = e.wheel.direction,
                                                             ^
Makefile:60: recipe for target 'window' failed
make: *** [window] Error 1

==> sudo make install

==> Installing Simple 2D
[...]
==> Checking for simple2d... no

Error: Simple 2D did not install correctly

Hmm, I wonder if the Debian SDL package is out of date. Could you run sdl2-config --version and see what it says? Looks like direction was added to SDL_MouseWheelEvent in version 2.0.4. Perhaps we should add a SDL version check to the install script.

Its 2.0.2
( https://packages.debian.org/jessie/libsdl2-dev )
There are no newer backports available for jessie (debian 8 oldstable), which otherwise could have been a simple way to get a newer version.
In the current stable release debian 9 (stretch) it would be 2.0.5
( https://packages.debian.org/stretch/libsdl2-dev )
BUT:
Even when I build sdl 2.0.5 myself, it fails.
(I just followed the sdl2 make guide, I have no idea if there have been any problems or missing dependencies. It "made" something and sdl2-config --version said 2.0.5 afterwards)
https://wiki.libsdl.org/Installation
For the moment I will look around for other ways to create a simple 2d game, but if I could help you somehow, please let me know.


Update default and example DO templates to use new features for routes and interfaces

New lib fixes some issues that prevented setting of self-ips, routes, etc, on GCP. Depends on #22.

Marking as closed with PRs #49 and #50


[Package Request] gocryptfs

Description
gocryptfs uses file-based encryption that is implemented as a mountable FUSE filesystem. Each file in gocryptfs is stored one corresponding encrypted file on the hard disk. The highlights are: Scrypt password hashing, GCM encryption for all file contents, EME wide-block encryption for file names with a per-directory IV.
Metadata

Homepage: https://nuetzlich.net/gocryptfs
Source: https://github.com/rfjakob/gocryptfs
License: MIT
Platforms: Unix, Linux, Darwin (beta)

📝 Pre-built binaries are released only for Linux amd64.

https://github.com/rfjakob/gocryptfs/issues/414
https://github.com/rfjakob/gocryptfs/releases

Support only linux/amd64

https://github.com/aquaproj/aqua-registry/pull/29678


Pack native files and symbols in tool package

These changes pack the monitor profiler libraries under the profiler/<rid> folder for each target framework and each native platform. This allows dotnet-monitor to carry the native libraries for all supported platforms in a single package.
Internal build (no tests): https://dev.azure.com/dnceng/internal/_build/results?buildId=1665317&view=results

/backport to release/6.x


Apply complete styling to the Badge text

Allows to use styles like 'textDecorationLine'

Hi there! Guys, are you interested in PRs? If not, please mention it somewhere in the README. If you are, it would be nice to have some comments...

Hi @priezz, thanks for the PR. Sorry for the delay.

![](https://link.nylas.com/open/agwwlmp32ok2sb4y8ns0ugace/local-47d11484-d0f7?
r=cmVwbHkrMDA2NWVlZmQxNDcxZmFiOGEwOGYyMjQyMWM2ZmFlNTQ1MmQzODliMmY1ODdiMThiOTJj
ZjAwMDAwMDAxMTQzOTZkNTE5MmExNjljZTBhZGI1NDY4QHJlcGx5LmdpdGh1Yi5jb20=)
Thank you for the reply. And many thanks for the library!


Feature request: Hide empty fields

We have many fields which are often empty for any given entry. For example, we have a "clients" table with a "company" field, but many clients are individuals who have no company associated with them. In the card view, the "Company" field nonetheless shows and takes up space, even though it provides us with no information.
It would be nice to have a toggle in the widget settings to automatically hide empty fields either on a per-field basis or for all fields automatically.

We will pay $25 to anybody who submits a PR that solves this issue and is accepted by maintainers. Bounty will be paid out in BTC. Bounty expires 1 year from the date of this comment.

This could make sense for view-only cards, or cards shown to view-only users. How do you envision this when a user may want to fill in a value in an empty field?

We've actually changed to using nocodb for our database for the time being. But maybe beneath the visible fields, have a collapsible section titled "empty fields" or something to this effect. This way the user could expand it, see the empty field, and edit it. Being able to set whether or not an empty field gets sent to this "empty fields" section or instead displays normally (taking up space and alerting the user to it being empty) on a per field basis would be quite useful.
Apologies, I think I may have made a comment on this issue and then deleted it yesterday, we were adding BTC to bounties for our existing issues on nocodb and thought this was one of them.

I'm unsubscribing from this issue, but not closing it as I do think something like this would be very useful. You are welcome to close it at your leisure if you want.


Erizo Client doesn't support optional video params for getUserMedia

According to this [0], is not possible to setup optional parameters for video constraints of getUserMedia, which makes impossible to select rear/front cameras with Chrome, there is another way to achieve this or a patch is needed ?
Also, would be interesting to add pass-through parameters directly into getUserMedia ?
I'll play with my own fork to find a way to achieve this, please let me know any suggestions that you might have.
Thanks!
[0] https://github.com/ging/licode/blob/ad9d53587cf9e1d187e2bed6e066f4b89ebb62cd/erizo_controller/erizoClient/src/Stream.js#L83

Chrome not support select rear/front camera on-the-fly. See this for get available audio and video sources and then set video/audio constraints in getUserMedia.

@mrbatista Right, I am still a step behind, just looking for pass optional and mandatory arguments to getUserMedia through ErizoStream.
This feature was removed in this commit<PHONE_NUMBER>4ef78dd9e76ce5bb0ac44a1c6a7539. See LOC.
Currently working on a patch for Erizo that also is compatible with videoSize.
LOC: https://github.com/ging/licode/commit/40662786364ef78dd9e76ce5bb0ac44a1c6a7539#diff-ac12d5f3fb930e488d8b6c38cf708e3dL85

Here is a patch just in case. https://github.com/rhinobird/licode/commit/8805c8c8654a378c92389d0bc6b828266446641b


1.3.10 Mythic Spellbook Error

Describe the bug
Running into an exception when trying to access the spells tab of a Magus 10, Lich 10 main character.  Lich spellbook added via Toy Box 1.3.9 and was able to edit with that version with no issues.
Able to access Paladin 10 (CL 7) Seelah's spellbook as normal.
To Reproduce
Steps to reproduce the behavior:

Load game
Open Toybox via mod manager
Go to Party Tab
Open Spells submenu on referenced character
Encounter unresettable error
Make bug report and revert to 1.3.9 to keep cheat- playing

Expected behavior
Spellbook menu loads as normal.
Save Files
Quick_8.zip
Running a number of other mods, I believe Tabletop Tweaks 1.3.0 is the only other one required to load the save.
Screenshots

Settings
Settings.zip
Version Info:

ToyBox Version: [e.g. 1.3.10]

Additional context
N/A

Thanks! Should be fixed ASAP!


Start same image with not same alias

If i want to start the same image config with a different alias, the first container is stop and and a new container is started;
Maven profilA
Alias: Container-A
Maven profilB
Alias: ContianerB
mvn docker:stop docker:start -P profilA
docker ps is OK i have Container-A
After this i start second profil
mvn  docker:stop docker:start -P profilB
docker ps
Container-A is stoped and removed
and  container-B is UP
I think that docker:stop not work with alias but image.
Can you made priority to Alias if strategy=alias

Correct, stopping is performed based on the image name only.
You suggestion to use the container name which is set to the alias when the naming strategy is alias is a good idea, so we should add it to one of the next releases.


feat: added generate-nano-reps script

Created a script to reconcile data in the nano.community database with the csv file at data/nano-reps.csv. The data in data/nano-reps.csv will serve as a source of truth moving forward.
The only conflicting field I didn't know how to reconcile. Perhaps we can contact them and see what their preference is.
  generate-nano-reps conflicting edits for account: nano_3chartsi6ja8ay1qq9xg3xegqnbg1qx76nouw6jedyb8wx3r4wu94rxap7hg +0ms
  generate-nano-reps [
  generate-nano-reps   DiffEdit {
  generate-nano-reps     kind: 'E',
  generate-nano-reps     path: [ 'twitter' ],
  generate-nano-reps     lhs: 'NanoCharts',
  generate-nano-reps     rhs: '@kilkelly'
  generate-nano-reps   }
  generate-nano-reps ] +0ms

I've also opened a new issue to help ensure discord username freshness: https://github.com/mistakia/nano-community/issues/83

Need to resolve the following conflicts:
  generate-nano-reps conflicting edits for account: nano_34amtofxstsfyqcgphp8piij9u33widykq9wbz6ysjpxhbgmqu8btu1eexer +0ms
  generate-nano-reps [
  generate-nano-reps   DiffEdit {
  generate-nano-reps     kind: 'E',
  generate-nano-reps     path: [ 'reddit' ],
  generate-nano-reps     lhs: 'tucsonthrowaway3',
  generate-nano-reps     rhs: 'Roconda'
  generate-nano-reps   }
  generate-nano-reps ] +0ms
  generate-nano-reps conflicting edits for account: nano_3jwrszth46rk1mu7rmb4rhm54us8yg1gw3ipodftqtikf5yqdyr7471nsg1k +3ms
  generate-nano-reps [
  generate-nano-reps   DiffEdit {
  generate-nano-reps     kind: 'E',
  generate-nano-reps     path: [ 'alias' ],
  generate-nano-reps     lhs: 'Natrium',
  generate-nano-reps     rhs: 'Binance'
  generate-nano-reps   }
  generate-nano-reps ] +0ms
  generate-nano-reps conflicting edits for account: nano_3zapp5z141qpjipsb1jnjdmk49jwqy58i6u6wnyrh6x7woajeyme85shxewt +1ms
  generate-nano-reps [
  generate-nano-reps   DiffEdit {
  generate-nano-reps     kind: 'E',
  generate-nano-reps     path: [ 'reddit' ],
  generate-nano-reps     lhs: 'Laughingboy14',
  generate-nano-reps     rhs: 'numsu'
  generate-nano-reps   }
  generate-nano-reps ] +0ms
  generate-nano-reps conflicting edits for account: nano_3chartsi6ja8ay1qq9xg3xegqnbg1qx76nouw6jedyb8wx3r4wu94rxap7hg +0ms
  generate-nano-reps [
  generate-nano-reps   DiffEdit {
  generate-nano-reps     kind: 'E',
  generate-nano-reps     path: [ 'twitter' ],
  generate-nano-reps     lhs: 'NanoCharts',
  generate-nano-reps     rhs: 'kilkelly'
  generate-nano-reps   }
  generate-nano-reps ] +1ms
  generate-nano-reps conflicting edits for account: nano_3power3gwb43rs7u9ky3rsjp6fojftejceexfkf845sfczyue4q3r1hfpr3o +0ms
  generate-nano-reps [
  generate-nano-reps   DiffEdit {
  generate-nano-reps     kind: 'E',
  generate-nano-reps     path: [ 'alias' ],
  generate-nano-reps     lhs: 'PowerNode',
  generate-nano-reps     rhs: "NF - The architect of Nano's ruin.  // nanotps.com"
  generate-nano-reps   }
  generate-nano-reps ] +0ms

Currently, only includes reps with 1000 Nano voting weight which includes some reps with no alias or known fields. Thoughts? @qwahzi
I wonder if it should be a requirement where at least one other field is known to be included.

remaining conflicts:
  generate-nano-reps conflicting edits for account: nano_34amtofxstsfyqcgphp8piij9u33widykq9wbz6ysjpxhbgmqu8btu1eexer +0ms
  generate-nano-reps [
  generate-nano-reps   DiffEdit {
  generate-nano-reps     kind: 'E',
  generate-nano-reps     path: [ 'reddit' ],
  generate-nano-reps     lhs: 'tucsonthrowaway3',
  generate-nano-reps     rhs: 'Roconda'
  generate-nano-reps   }
  generate-nano-reps ] +1ms
  generate-nano-reps conflicting edits for account: nano_3zapp5z141qpjipsb1jnjdmk49jwqy58i6u6wnyrh6x7woajeyme85shxewt +4ms
  generate-nano-reps [
  generate-nano-reps   DiffEdit {
  generate-nano-reps     kind: 'E',
  generate-nano-reps     path: [ 'reddit' ],
  generate-nano-reps     lhs: 'Laughingboy14',
  generate-nano-reps     rhs: 'numsu'
  generate-nano-reps   }
  generate-nano-reps ] +0ms
  generate-nano-reps conflicting edits for account: nano_3chartsi6ja8ay1qq9xg3xegqnbg1qx76nouw6jedyb8wx3r4wu94rxap7hg +0ms
  generate-nano-reps [
  generate-nano-reps   DiffEdit {
  generate-nano-reps     kind: 'E',
  generate-nano-reps     path: [ 'twitter' ],
  generate-nano-reps     lhs: 'NanoCharts',
  generate-nano-reps     rhs: 'kilkelly'
  generate-nano-reps   }
  generate-nano-reps ] +0ms
  generate-nano-reps conflicting edits for account: nano_3power3gwb43rs7u9ky3rsjp6fojftejceexfkf845sfczyue4q3r1hfpr3o +1ms
  generate-nano-reps [
  generate-nano-reps   DiffEdit {
  generate-nano-reps     kind: 'E',
  generate-nano-reps     path: [ 'alias' ],
  generate-nano-reps     lhs: 'PowerNode',
  generate-nano-reps     rhs: "NF - The architect of Nano's ruin.  // nanotps.com"
  generate-nano-reps   }
  generate-nano-reps ] +0ms


Use JupyterHub for REST api authentication

Currently we support REST api authentication via:

basic (mostly for testing)
kerberos

We could also handle REST api authentication via validating a JupyterHub api token with JupyterHub. This would allow nice integration with JupyterHub, which provides an api token in the kernel environment.

These docs look useful: https://jupyterhub.readthedocs.io/en/stable/api/services.auth.html

Fixed by #36.


Make eliasenvy main repo

https://github.com/eliaslevy/raml_ruby
Can we make @eliaslevy the main repository? The implementation is close to be completed there. Still some little parts missing. I want to contribute with this project but I don't think there's seems to be much of a maintenance.
If you were interested I would be happy to take over the maintenance and continue contributing with the missing parts.
Pol

@coub merged my branch in #3 .


chore(main): release 1.0.2

:robot: I have created a release beep boop
1.0.2 (2022-10-30)
Bug Fixes

remove warns while install (82c9379)

Performance Improvements

remove ffmpeg-static (2a26c7c)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/EvolutionX-10/Ariaa/releases/tag/v1.0.2 :sunflower:


Use correct Laravel version in composer file

Laravel switched to semver with 6.0. This change will allow updating Laravel.

Thanks!


[5.3.*] AppMan: Item list could not be downloaded

I'm using HaxeDevelop but I guess this goes to the same place.
I tried to install something through AppMan. But if I open it, it just says it could not download the item list.

I'm using HaxeDevelop <IP_ADDRESS>

I also get this and installing .net framework 3.5 doesn't work at all
the installer just closes

can we get a reply on this?
or at least a way to fix it in the meantime?
I'm not going to use visual studio code and this is keeping me from learning the haxe language

The only thing I've found is this xml file that AppMan is supposed to pull from: https://www.flashdevelop.org/appman.xml
Put that in your browser and you'll have to manually go to the links of the things you need.
This forum post says you can simply put the xml data into the  section of the AppMan config file but I tried that with no luck so I downloaded everything manually.

where is this AppMan config located on windows?

so they don't care to fix this?

The admin that posts the release versions on the forums hasn't made a post since 2018 but the repository seems to still get updates so I'm not sure

Found a way to fix it!
You need to download the appman.xml manually and paste it wherever you want. In my case, the appman folder.
Then, right-click > Copy As Path
After that, you need to edit the Config.xml file, and replace the url https://www.flashdevelop.org/appman.xml from  and paste your file path without quotation marks. And save it.

Finally, the AppMan should be working.

 I haven't updated my FlashDevelop version in a long time and the development build fixed so many problems I had with the old version!

raw.githubusercontent.com It's not usually unavailable in China, so please change to auto try https://www.flashdevelop.org/appman.xml  when https://raw.githubusercontent.com/fdorg/flashdevelop/development/appman.xml is unavailable.

raw.githubusercontent.com It's not usually unavailable in China, so please change to auto try https://www.flashdevelop.org/appman.xml  when https://raw.githubusercontent.com/fdorg/flashdevelop/development/appman.xml is unavailable.

hm... ok

hm... ok


Add a second scope for i18n enum to follow the syntax in Rails guides

In Rails guides there is the two following paragraph about I18n and ActiveRecord:

https://guides.rubyonrails.org/i18n.html#translations-for-active-record-models
https://guides.rubyonrails.org/i18n.html#error-message-scopes

The guides talk about this
en:
  activerecord:
    attributes:
      user/gender:
        female: "Female"
        male: "Male"

Instead of
en:
  activerecord:
    attributes:
      user:
        genders:
          female: "Female"
          male: "Male"

Since this I18n scope is present since 5 years ago, my PR add a second scope instead of changing it. That way we are able to use both, and not broke existing Rails applications.
I've to add tests. I just start this as a discussion before continuing that way.

Hi @nicolas-brousse, sorry for not reviewing this sooner. This looks sensible, but would need tests before it's merged. Are you in a position to add these (or at least try)?

Hey @justinfrench, no worries, I know that it a quite sensible change. I tried to found an other way to manage it, but didn't found. So I propose it this way.
So yes, if this change sounds interesting for you, I could try to found time to add some tests.
I already tried it temporarily in a real project. But since it's a sensible change, I prefer to work on a test.
I'll try to found some time on next week since I'm currently sick. I'll keep you in touch.


Use Github CLI to create releases

Our release workflow uses Github Action that hasn't been supported since 2021. We should use Github CLI instead:
gh release create "${tag}" --title="${title}"

Could you have a look at https://github.com/networkservicemesh/deployments-k8s/actions/runs/8523691185/job/23347838943?

Seems like done. Thanks!§


Refactor around ChangeDetectorRef for increased testability?

Right now the clearest thing standing in the way of building some "marble diagrams" tests for Pharkas is that Angular ChangeDetectorRef dependency which is entirely imperative.
Some sort of ChangeDetectorObserver (ChangeDetectionSubject?) wrapper intermediary could speak Observable<T> more naturally and avoid the internal subscribes in testing cases and allow us to simply use "marble diagrams" testing. My biggest concern about the external API change is if we move to base constructor(ref: ChangeDetectorRef | ChangeDetectorObserver) and there aren't more general uses of ChangeDetectorObserver if it might confuse people on how to inject derived classes. (Everyone seems to think Angular is "testable" because it includes useless and broken tests out of the box yet here contemplating real testing and we are left with a hard dependency on a nigh untestable imperative backdoor keeping us from doing cleaner RxJS testing.)
Bookmarking here for later if I do sort out this refactoring pain, nice mocha and chai wrappers: https://github.com/rxjs-stuff/marbles

That rxjs-stuff repo is out of date. Just using the built-in at this point should be easy enough: https://rxjs.dev/guide/testing/marble-testing
Unfortunately what I really want for virtual timing is the animate() helper which doesn't exist until v8 and Angular 13 is still on v6.
I found out that I can't get mocha working directly because of @angular/core inputs are not ESM safe in Angular 13. I was able to get Jest tests running (thanks to schematic @briebug/jest-schematic but the tests are useful without animate().


The 'share' icon shouldn't copy the URL without warning

This could cause information loss if people had something else they wanted to keep in their buffer. The UV has a model for sharing URLs that might work, if only for consistency between BL projects.

Well there is a tooltip that comes up when you hover over the button saying "Copy URL", and clicking on it does so. So not entirely without warning and the kind of thing I've seen in many other places! Making people copy it from a text input is usually used because it's easier than copying automatically with JavaScript and probably provides better compatibility for IE6 or whatever. But we can look at updating this later.

This issue was moved to LibCrowds/libcrowds-viewer#107


[PE-D][Tester A] Unrelated tags are treated as "Existing Plans" when a contact is selected using the "select" command

Details
When a contact is "selected", tags associated with the contact are displayed under the header: "Existing plans". However, since the only restrictions on tags are that they need to be alphanumeric with no spaces, unrelated tags such as "chinese" can also be classified under "Existing plans", which may not be desired by the target audience.
How to reproduce

Launch fapro
Type in the command: edit 1 t/chinese
Type in the command: select 1

Expected
Existing plans should only include existing financial plans like "investment", "retirement", not unrelated tags like "chinese".
Actual

Labels: severity.VeryLow type.FeatureFlaw
original: J-wang-CSMA/ped#12

Tags only meant for tags


[VS] Remember and re-use the access-level from your last collaboration session

In a classroom environment I want students to have read only access to my session.  There are options in the Live Share options dialog but it isn't clear which ones persist across sessions and which don't. Each time I start a session I get the info bar at the top and I click Make Read-Only. I want this to be a default setting so I don't have to do that. I should be able to "not make read only" only for sessions I might want to allow this.

@CoolDadTx This is great feedback! In VS Code, we actually have a specific entry point to start a read-only session, but we don't currently have the equivalent in VS. We should obviously add that! If you had a File menu item called Start read-only collaboration session..., would that be sufficient for your workflow?
Additionally, I like the idea of persisting the access level of your previous session, and re-using it. That way, you could click the "global" Live Share button, and have it remember the permission level you last used, and you could then switch to read-only or read/write accordingly.

A File menu item would work but if it was off the Live Share button that would probably be more discoverable to me. Either way it would save me the extra effort I use now. Thanks.

The Live Share tool window in VS now includes button to share directly in read-only and read/write modes, so I think this should largely address this request. Please re-open if that isn't the case. Thanks!


what are your train.json formats of genia in datasets?

Hello, I'm so shocked by your brilliant insight and hugely interested in  you model and innovation point of this paper. There are some errors When I ran these codes from github.com. But I have no ideas to cope with these mistakes.Therefore, I would like to  request one question: what are your train.json formats of genia in datasets? Because I can't run data_preprocess in the begining, so I try to use my own data_preprocess code to generate train.json ... , but unfortunately it'doesn't work. Hope to get an answer.
Thanks~!

Hi! If I understand your question, you ran into the same problem that I did (all the links to the mysteriously preprocessed genia dataset are 404s). I found some files here - https://github.com/yhcc/CNN_Nested_NER/tree/master/preprocess/outputs/genia - which I was able to convert with this adjusted method:
def convert_default(example: Dict) -> Dict:
    offset_mapping = []
    text = ''
    for sent in example['tokens']:
        for token in sent:
            if text == '':
                offset_mapping.append((0, len(token)))
                text += token
            else:
                text += ' ' + token
                offset_mapping.append((len(text) - len(token), len(text)))
    entity_types, entity_start_chars, entity_end_chars = [], [], []
    for ann in example['entity_mentions']:
        start = ann["start"]
        end = ann["end"]
        entity_type = ann["entity_type"]
        start, end = offset_mapping[start][0], offset_mapping[end][1]
        entity_types.append(entity_type)
        entity_start_chars.append(start)
        entity_end_chars.append(end)

    start_words, end_words= zip(*offset_mapping)
    return {
        'text': text,
        'entity_types': entity_types,
        'entity_start_chars': entity_start_chars,
        'entity_end_chars': entity_end_chars,
        'id': example['sent_id'],
        'word_start_chars': start_words,
        'word_end_chars': end_words
    }

Hi @kristinlindquist ! Thank you for your help! I have a question: what was your convert function for GENIA .jsonlines in that case?

Hello, thank you very much for your help, I would also like to ask about the function used to convert the jsonlines, please.
Thank you again !

@helleuch
The following function worked for me:
`def convert_genia(example: Dict) -> Dict:
offset_mapping = []
text = ''
for token in example['tokens']:
if text == '':
offset_mapping.append((0, len(token)))
text += token
else:
text += ' ' + token
offset_mapping.append((len(text) - len(token), len(text)))
entity_types, entity_start_chars, entity_end_chars = [], [], []
for ann in example['entity_mentions']:
start = ann["start"]
end = ann["end"]
entity_type = ann["entity_type"]
start, end = offset_mapping[start - 1][0], offset_mapping[end - 1][1]
entity_types.append(entity_type)
entity_start_chars.append(start)
entity_end_chars.append(end)
start_words, end_words= zip(*offset_mapping)
return {
    'text': text,
    'entity_types': entity_types,
    'entity_start_chars': entity_start_chars,
    'entity_end_chars': entity_end_chars,
    'id': example['sent_id'],
    'word_start_chars': start_words,
    'word_end_chars': end_words
}`

and the according changes in the main function:
def main(args):     if args.task == "conll2003":         convert = convert_conll2003     elif args.task == "genia":         convert = convert_genia     else:         convert = convert_default     os.makedirs(os.path.dirname(args.output), exist_ok=True)     entities, docs = 0, 0     with open(args.output, 'w', encoding='utf-8') as fw, open(args.input, encoding='utf-8') as fr:         ids = set()         for idx, ln in enumerate(fr):             if ln == '\n':                 continue             example = json.loads(ln)             print(example)             try:               example = convert(example)              except Exception as e:               print(f"Could not convert line {idx}; skipping.")               continue             entities += len(example["entity_types"])             docs += 1             assert example['id'] not in ids             ids.add(example['id'])             fw.write(json.dumps(example) + '\n')     print(f"Entities: {entities}")     print(f"Docs: {docs}")

@Veranchos Thank you very much !


Changes in Elixir HEEx sigils are not highlighted

When changing code inside an embedded HEEx sigil on Elixir, difftastic is not highlighting the changes but the whole sigil.
I have the following code:
  def render(assigns) do
    if assigns.count == 5 do
      raise "Crash on render"
    end

    ~H"""
    <%= @count %>
    <button phx-click="inc">+</button>
    <button phx-click="dec">-</button>
    <button phx-click="error">Crash on handle_event</button>

    <.link href="/?crash=mount">Crash on mount</.link>
    <.link patch="/?crash=handle_params">Crash on handle_params</.link>

    """
  end

And I change it to (just added the new class to the first  element):
  def render(assigns) do
    if assigns.count == 5 do
      raise "Crash on render"
    end

    ~H"""
    <%= @count %>
    <button phx-click="inc">+</button>
    <button phx-click="dec">-</button>
    <button phx-click="error">Crash on handle_event</button>

    <.link href="/?crash=mount">Crash on mount</.link>
    <.link patch="/?crash=handle_params">Crash on handle_params</.link>

    """
  end

When using basic git diff it highlights the changed line. On the other hand, difftastic highlights the whole block:

It is important to note that diffs are properly highlighted on HEEx files. The problem appears only on embedded HEEx blocks.
I am using latest difftastic on MacOS:
Difftastic 0.61.0

Toolchain: 1.82.0
System:    macos aarch64

I believe that the involved tree sitter parsers are:

https://github.com/elixir-lang/tree-sitter-elixir
https://github.com/phoenixframework/tree-sitter-heex


Incorrect "Transfer amount exceeds balance" error when updating relayer fee

Describe the bug
The site asks for 12.84 USDT to be added to update the relayer fee. The user has 15.86 USDT. Despite this, the site gives a "Transfer amount exceeds balance" error when the user tries to update it.
Additional context
https://discord.com/channels/454734546869551114/1127789215367843840/1127795443343044639

User refreshed repeatedly and got it to work

User refreshed repeatedly and got it to work. Possibly a provider issue.


Staging edxorg users, profiles, courseaccessroles and certificates

What are the relevant tickets?

remaining https://github.com/mitodl/hq/issues/4067
Description (What does it do?)

Creating stg__edxorg__s3__user and stg__edxorg__s3__user_profile, stg__edxorg__s3__user_courseaccessrole and stg__edxorg__s3__courserun_certificate

fields are converted to the proper data types and cleaned
data is deduplicated

How can this be tested?

Run these commands and there should be no errors
dbt build --select stg__edxorg__s3__user
dbt build --select stg__edxorg__s3__user_profile
dbt build --select stg__edxorg__s3__user_courseaccessrole
dbt build --select stg__edxorg__s3__courserun_certificate

The builds all looked good no errors or warnings. The definitions and data looked good to me too. I guess just a question- do you think we should have relationship data checks in the dbt?

It's a good idea to add relationship checks but given the nature of this dataset and we are still loading missing data, we can add that later if needed once data are completely loaded.  This PR is for staging and cleaning the data. There will be additional work in https://github.com/mitodl/hq/issues/4263 to validate this data


espflash detects wrong flash size

I have an esp-c3-32s-kit-v1.0 (version a) see PDF page 11 .
When flashing with espflash it prints this:
Chip type:         esp32c3 (revision v0.3)
Crystal frequency: 40MHz
Flash size:        2MB
Features:          WiFi, BLE
MAC address:       [redacted]
App/part. size:    1,071,792/2,031,616 bytes, 52.76%
[00:00:01] [========================================]      13/13      0x0
[00:00:00] [========================================]       1/1       0x8000
[00:01:03] [========================================]     608/608     0x10000
[2024-02-11T09:46:00Z INFO ] Flashing has completed!

It says 2MB, however the board is supposed to have 4MB.
I also have the issue that I can only flash and run it by this process:

unplug the USB cable
press and hold both buttons
plug in the USB
release the buttons
flash
unplug the USB cable
plug in the USB

This only started happening recently. Before I could flash it without this workaround. I suspect something went wrong with the flash size or layout at some point.

The datasheet for the board also says there is a 2MB verison. Could you check what esptool.py detects?

Dear @MabezDev, I checked again and it is indeed the 2MB version. 🫢
I'm terribly sorry!


Use separate fields for in/out extensions

This way the server will send back extensions only if the user
code explicitly handles them.

Reviewed 2 of 2 files at r1.
Review status: :shipit: all files reviewed at latest revision, all discussions resolved, all commit checks successful.

Comments from the review on Reviewable.io


GPUGridLayer: No rendering on Windows Chrome.

Description

Repro Steps

Environment (please complete the following information):

Framework Version: deck.gl 7.3.0
Browser Version: Chrome 77
OS: Windows 10

Logs

Some initial investigation details:

Color and Elevation MinMax buffers don't contain valid data.
For testing, by manually setting data for these buffers, still doesn't render anything.

Next steps:

There could some ANGLE specific issues.
Remove UBO usage and replace it with Texture sampling (Similar to HeatmapLayer)

Lot of things changed,  we should retest with 8.0 build.

Duplicate of #4065


Creating Puppet Image using Java SDK doesn't  have puppet works fine with Azure CLI

I am just trying to create Puppet VM on azure using Azure java SDK and using puppet labs VM image to build my machine.
when i do the same using Azure UI or Azure Cli it's works fine but when i do it using Azure Java Sdk machine is created but puppet is not installed on that.


#554: Lead/lag window function with offset and default value arguments

Which issue does this PR close?
#Closes #554.
Rationale for this change
Implement offset and default value optional arguments in lead/lag window functions.
What changes are included in this PR?
Changes in lead/lag pub fn signatures.
Are there any user-facing changes?

I have a few doubts:

Lag/Lead signatures has to be changed to support 2nd/3nd optional arguments, is this correct or am I misunderstanding the use of Signature::OneOf ?

Signature::OneOf(vec![
    Signature::Any(1),
    Signature::Any(2),
    Signature::Any(3),
])

If previous point is correct, then evaluation of Signature::OneOf in type_coercion::get_valid_types has to be changed to something like this

Signature::OneOf(types) => {
    let mut r = vec![];
    for s in types {
        // we must ensure that one of the signatures is valid against the current_types
        if let Ok(valid_types) = get_valid_types(s, current_types) {
            r.extend(valid_types);
        }
    }
    r
}

original code is currently forcing all options within Signature::OneOf to be valid
Signature::OneOf(types) => {
    let mut r = vec![];
    for s in types {
        r.extend(get_valid_types(s, current_types)?);
    }
    r
}

I'd like to test create_built_in_window_expr with the optional arguments on and off, to match against the lead/lag signatures,
but How can I test the resulting WindowShift struct?
Right now, I can only try that the presence or absence of this optional arguments don't panic in test_create_window_exp_lead_no_args/test_create_window_exp_lead_with_args

Had to copy and change the original arrow::compute::kernels::window::shift to allow filling the start/end nulls with the default value (this new fn is called shift_with_default_value inside lead_lag crate)

FYI @Jimexist  -- do you have some time to review this code?

Lag/Lead signatures has to be changed to support 2nd/3nd optional arguments, is this correct or am I misunderstanding the use of Signature::OneOf ?

that part was confusing to me as well. i believe a most elegant way is to create support for heterogenous support for function arguments

I'd like to test create_built_in_window_expr with the optional arguments on and off, to match against the lead/lag signatures,

i'm okay with integration tests that cover these

Had to copy and change the original arrow::compute::kernels::window::shift to allow filling the start/end nulls with the default value (this new fn is called shift_with_default_value inside lead_lag crate)

changing arrow-rs repo is one way to achieve it although it'll needs two more weeks to be released. i'm okay with keeping the copied and modified version here.

this change looks generally okay, thanks for the effort!
I would suggest: replacing branching with one call and also add a case in the integration test folder, esp.:
1. out of bounds shift offset,

2. negative bounds

3. default value being null

Thank you @Jimexist.
I have followed your advices and changed the type_coercion::get_valid_types to use filter_map and switch the two conditional branches to one single call to shift_with_default_value. I will try to look the integration tests later today.

@Jimexist I was trying to execute the integration tests manually,
executing test_psql_parity.py with the following sql
SELECT
  c8,
  LEAD(c8) OVER () next_c8,
  LEAD(c8, 10, 10) OVER() next_10_c8,
  LEAD(c8, 100, 10) OVER() next_overflow_c8,
  LAG(c8) OVER() prev_c8,
  LAG(c8, -2, 0) OVER() AS prev_2_c8,
  LAG(c8, -200, 10) OVER() AS prev_overflow_c8

FROM test
ORDER BY c8;

There was some errors: type coercing problems between default_value and the slice data_type
and between lead postgres (positive) and datafusion/shifting (negative) arguments.
After fixed it in the latest commit, previous example works fine.
But if I try to test agains some custom partition
SELECT
  LAG(c8) OVER(PARTITION BY c9 ORDER BY c9) AS prev_c8

FROM test
ORDER BY c8;

datafusion throws an error
Empty DataFrame
Columns: [Plan("Projections require unique expression names but the expression \"LAG(#test.c8) AS prev_c8\" at position 4 and \"LAG(#test.c8) PARTITION BY [#test.c9] ORDER BY [#test.c9 ASC NULLS FIRST] AS prev_c8\" at position 7 have the same name. Consider aliasing (\"AS\") one of them.")]

I will try to look at this later today if I can ...

if the first example works then it's fine. the second example might fail because of different reasons not related to this change.

if the first example works then it's fine. the second example might fail because of different reasons not related to this change.

Would it be better to have a different sql for each case (lead/lag out of bounds/negative/default being null) or is it ok to test all combinations in a single sql?

@Jimexist  do you think this PR is ready? Do you need help reviewing ?

@Jimexist do you think this PR is ready? Do you need help reviewing ?

looks okay after rebasing.

@Jimexist do you think this PR is ready? Do you need help reviewing ?

looks okay after rebasing.

Hi @Jimexist, just made the rebase from master


using read() to get both stdout and stderr is tricky

The most naive way, cmd('foo').read(stderr=STDOUT), doesn't work the way you might expect.

In the standard library, if you specify stdout=PIPE, stderr=STDOUT, the error output joins in that pipe. In duct currently, that wouldn't work if you specified those parameters at the same time.
The downside of respecting the newly set value is that it becomes impossible to swap stdout and stderr. But that's extremely uncommon. Is there any other use case that I'm missing?

We could, as a special case, allow stdout=STDERR, stderr=STDOUT to swap the two. Otherwise it has to be an error, so it's not exactly ambiguous.


Merge with Polyjuice client?

cc'ing @uhoreg.. It seems this library has quite some overlap with https://gitlab.com/uhoreg/polyjuice_client
Polyjuice does more around managing the connection and the sync, while matrix-elixir-sdk is more focused on solely the HTTP requests. Given that the community is already quite small I don't see why there should be 2 Elixir Matrix client libraries.
Thoughts?

I'm all for consolidating our efforts if possible (and full disclosure, this has was already tentatively discussed a few months back). If I recall correctly @uhoreg was going to try depending on the sdk in Polyjuice to see how feasible a merge would be?

Yeah, we had discussed the idea of merging.  I haven't had time yet to experiment with changing Polyjuice to use the functions defined in this library, though.

In terms of Client API coverage I think both libraries actually are quite on par; both of them are incomplete I think (understandably; there's a lot of endpoints to cover...)
Polyjuice also implements the decoding of the response, which is nice; while matrix-elixir-sdk just returns the JSON as-is.
Polyjuice, however, does not offer "one shot" API usage, it is always necessary to start a Client process, which can be cumbersome for one-off API requests. (However that is actually not that hard to implement due to the Polyjuice.Client.API protocol).
I'm not sure what the direction forward here is, if there is any. Personally I have started with using Polyjuice, so I'll be contributing there more in the future.

I think the first point of order is determining what the goals for either library are. I can speak only to the SDK at this point as I haven't studied Polyjuice. SDK-wise my initial goal was to build a set of modules that could be used to create Matrix clients in Elixir. This meant encryption functions (aka olm), wrapping the endpoints, and potentially some extra opt-in conveniences for syncing state, handling keys and so forth. The goal is to be as lightweight as possible and only abstract the main pain points for users.
Perhaps it would be fruitful to consider the SDK as a core library at this point, especially given the work done on Polyjuice. My suggestion would be to consolidate by having Polyjuice depend on core  and olm. core would simply wrap the endpoints (current sdk), olm the encryption functionality and Polyjuice a stateful layer built on top. This would, I feel, be the most flexible solution for users. All of these libraries together would constitue the client SDK for Elixir. Arguably the transition should also be fairly simple as the sdk currently implements only minimal response parsing and this would be the junction between the two libraries.
@uhoreg it would be great to hear your thoughts on that last paragraph in particular.
I'd also like to ping @kowsheek and @fancycade as they both expressed interest in using the SDK in production—any thoughts you might have on this would be very much appreciated.

Polyjuice, however, does not offer "one shot" API usage, it is always necessary to start a Client process, which can be cumbersome for one-off API requests. (However that is actually not that hard to implement due to the Polyjuice.Client.API protocol).

@arjan Polyjuice has has Polyjuice.Client.LowLevel that can be used for this.  It's just a simple struct -- it doesn't start a process or try to do anything fancy.

I think the first point of order is determining what the goals for either library are. I can speak only to the SDK at this point as I haven't studied Polyjuice. SDK-wise my initial goal was to build a set of modules that could be used to create Matrix clients in Elixir. This meant encryption functions (aka olm), wrapping the endpoints, and potentially some extra opt-in conveniences for syncing state, handling keys and so forth. The goal is to be as lightweight as possible and only abstract the main pain points for users.

Polyjuice client was intended to be a relatively high-level library, mostly aimed at bot development, but trying not to exclude others uses (e.g. it should be possible to write an IM client with it).  It aims to abstract out as much as it makes sense to.  I haven't made any attempt at supporting olm yet (since it's intended primarily for bot development, it wouldn't be unreasonable to use pantalaimon to handle encryption).

Perhaps it would be fruitful to consider the SDK as a core library at this point, especially given the work done on Polyjuice. My suggestion would be to consolidate by having Polyjuice depend on the core and olm. Core would simply wrap the endpoints (current sdk), olm the encryption functionality and Polyjuice a stateful layer built on top. This would, I feel, be the most flexible solution for users. All of these libraries together would constitue the client SDK for Elixir. Arguably the transition should also be fairly simple as the sdk currently implements only minimal response parsing and this would be the junction between the two libraries. (Note: I suggest this design regardless of where the end code lives on the internet.)

Yes, if we do merge, I think that would be the way to do it.  My understanding of the current state of both projects is that SDK implements more endpoints than Polyjuice, but is lower-level, whereas Polyjuice seems to be higher-level but does not support as many endpoints.  So I think it makes sense to try to convert the Polyjuice functions to use SDK's functions to call the endpoints, rather than its own endpoint handling.

Thanks for the ping @niklaslong. This is a great conversation and I agree with the direction of consolidation. In the words of great Joe, we should try to reduce the stuff we have.
As with many great libraries in the Elixir ecosystem, I think we should offer both high-level & low-level abstractions so this will be a good merger.
In the project I'm working on the design phase of, we are looking to use both a Matrix server & client. It would be great if we could consolidate further with @serra-allgood's library under one umbrella.
Looking forward to further discussion.

I've given some more thought about how we might possibly merge Polyjuice Client and Matrix SDK and jotted down some thoughts.  I've started with a summary of how Matrix SDK does Matrix requests, then how Polyjuice Client does Matrix requests, and then some possibilities for merging.
Matrix SDK:
"https://matrix.org"
|> Request.send_room_event(access_token, room_id, event)
|> API.do_request()

alternatively:
Request.send_room_event("https://matrix.org", access_token, room_id, event)
|> API.do_request()

call a function to create a MatrixSDK.API.Request struct, which contains the request details, including the homeserver URL and access token
call API.do_request() on that struct
result is the raw HTTP response (except for errors)

Polyjuice Client:
uses a Polyjuice.Client.API protocol, and structs that implement it are responsible for providing the homeserver URL, access token, and other information.  So the equivalent in Polyjuice Client would be:
client = create_client_somehow()
Polyjuice.Client.Room.send_message(client, room_id, event)

Behind the scenes, Polyjuice.Client.Room.send_message:

creates a Polyjuice.Client.Endpoint.PutRoomsSend struct, which encapsulates the function arguments, and implements the Polyjuice.Client.Endpoint.Proto protocol
tells the client to call the Polyjuice.Client.Endpoint.PutRoomsSend, which

transforms the Polyjuice.Client.Endpoint.PutRoomsSend into a standardized Polyjuice.Client.Endpoint.HttpSpec (which is similar to MatrixSDK.API.Request, but without the base URL, and without the access token)
makes the HTTP call
parses the HTTP response according to how the endpoint struct implements the Polyjuice.Client.Endpoint.Proto protocol

Merging Polyjuice Client and Matrix SDK:
several possibilities

could replace Polyjuice.Client.Endpoint.HttpSpec with MatrixSDK.API.Request

doing just this doesn't really buy us much
would require some changes to MatrixSDK.API.Request

make base URL, access token optional -- this can probably be done, if we create the MatrixSDK.API.Request ourselves, as we can just omit/ignore  the base URL, and not add the access token header

could replace Polyjuice.Client.Endpoint.* modules (e.g. Polyjuice.Client.Endpoint.PutroomsSend) with MatrixSDK.API.Request, and drop the Polyjuice.Client.Endpoint.Proto protocol

also, probably not much benefit?
again, would require some changes to MatrixSDK.API.Request

same as above, but we also need some way to specify a way to parse the result

we lose the ability to add other transports (e.g. in Polyjuice Client, we could make each endpoint have the ability to also generate a Polyjuice.Client.Endpoint.FooBarSpec, if someone defines a Matrix-over-foobar transport -- e.g. low-bandwidth Matrix: https://github.com/matrix-org/matrix-doc/pull/3079)

could change Matrix SDK's Request functions to not take the matrix server and access token, and pass the MatrixSDK.API.Request to a function that does know the matrix server and access token.  e.g.
Request.send_room_event(room_id, event)
|> API.do_request("https://matrix.org", access_token)

at which point, Polyjuice Client could also do something like
client = create_client_somehow()
request = Request.send_room_event(room_id, event)
Polyjuice.Client.do_request(client, request)

too weird?
seems like a lot of work and a pretty invasive change to Matrix SDK

we could leave the libraries' request parts intact, and focus on collaborating on supporting functions (e.g. Polyjuice Client's message builder, Matrix SDK's authentication type builder)

we'll still have two libraries that people would have to choose from, but at least we can help each other out in some way

@kowsheek thanks for weighing in here!

As with many great libraries in the Elixir ecosystem, I think we should offer both high-level & low-level abstractions so this will be a good merger.

I agree with this point and I think it is worth attempting if all parties are onboard.

It would be great if we could consolidate further with @serra-allgood's library under one umbrella.

I'm not convinced an umbrella is the ideal structure at this point given how these projects could grow. This is indeed something to keep in mind. If a merge, or at the very least a consolidation, is deemed possible, we can then discuss logistics.
@uhoreg, many thanks for the hard work on the above! 🙌
I have a few initial thoughts:

we lose the ability to add other transports (e.g. in Polyjuice Client, we could make each endpoint have the ability to also generate a Polyjuice.Client.Endpoint.FooBarSpec, if someone defines a Matrix-over-foobar transport -- e.g. low-bandwidth Matrix: matrix-org/matrix-doc#3079)

I think defining a custom transport is still a possibilty with the SDK, you'd simply need to implement the behaviour for sending a request (including encoding and decoding)? This API could of course be adjusted and extended as necessary.

same as above, but we also need some way to specify a way to parse the result

Speaking of adjustements, this would work quite nicely with the decoupled transport: the SDK would benefit from having response parsing (it currently only has rudimentary error parsing implemented). Perhaps Polyjuice's parsing could provide some guidance for this?

I think defining a custom transport is still a possibilty with the SDK, we would simply need to implement the behaviour for sending a request (including encoding and decoding)? This API could of course be adjusted and extended as necessary.

While it would be possible to do that, I don't think it is a good way to do it.  For example, the low-bandwidth makes some big changes to the request path.  e.g. an HTTP request to the path /_matrix/client/r0/rooms/!7mqP7DYBUOmwAweF:localhost/send/m.room.message/$.AAABeH6obLU becomes a CoAP request to the path /9/!7mqP7DYBUOmwAweF:localhost/m.room.message/$.AAABeH6obLU (note that this isn't simply replacing a prefix in the path, but the /send that appears in the middle of the path also disappears).  So the custom transport would need to parse the path and rewrite it, which would make it more complicated.  It would be easier to just create the shortened CoAP path from the given parameters.  If it was just a matter of throwing the exact same request data at a different transport, then I would agree that just creating a new module for the transport would be fine, but with needing to parse and mangle the path, I think it would be better to do that transformation closer to where we have access to the raw parameters.


Document Kafka Bindings for various platforms

Provide documentation for Kafka bindings on various platforms

Done. Shared as doc. @secondsun to based on that in his documentation


python311Packages.awkward: 2.6.2 -> 2.6.3

Description of changes
Changelog: https://github.com/scikit-hep/awkward/releases/tag/v2.6.3
cc @veprbl
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 300810 run on x86_64-linux 1

22 packages failed to build:

python311Packages.awkward
python311Packages.awkward.dist
python311Packages.coffea
python311Packages.coffea.dist
python311Packages.correctionlib
python311Packages.correctionlib.dist
python311Packages.dask-awkward
python311Packages.dask-awkward.dist
python311Packages.mplhep
python311Packages.mplhep.dist
python311Packages.uproot
python311Packages.uproot.dist
python311Packages.vector
python311Packages.vector.dist
python312Packages.awkward
python312Packages.awkward.dist
python312Packages.correctionlib
python312Packages.correctionlib.dist
python312Packages.uproot
python312Packages.uproot.dist
python312Packages.vector
python312Packages.vector.dist

4 packages built:

python311Packages.awkward-cpp
python311Packages.awkward-cpp.dist
python312Packages.awkward-cpp
python312Packages.awkward-cpp.dist

Result of nixpkgs-review pr 300810 run on x86_64-linux 1

30 packages built:

python311Packages.awkward
python311Packages.awkward-cpp
python311Packages.awkward-cpp.dist
python311Packages.awkward.dist
python311Packages.coffea
python311Packages.coffea.dist
python311Packages.correctionlib
python311Packages.correctionlib.dist
python311Packages.dask-awkward
python311Packages.dask-awkward.dist
python311Packages.mplhep
python311Packages.mplhep.dist
python311Packages.papermill
python311Packages.papermill.dist
python311Packages.uproot
python311Packages.uproot.dist
python311Packages.vector
python311Packages.vector.dist
python312Packages.awkward
python312Packages.awkward-cpp
python312Packages.awkward-cpp.dist
python312Packages.awkward.dist
python312Packages.correctionlib
python312Packages.correctionlib.dist
python312Packages.papermill
python312Packages.papermill.dist
python312Packages.uproot
python312Packages.uproot.dist
python312Packages.vector
python312Packages.vector.dist


Finish issue labeling guide

It is hard to orient in issues.
It would help us with planing if we have some labeling system so we know what is epic, what is task or a dicussion.
Lets finish with labeling system https://github.com/kedgeproject/kedge/pull/284

fixed in https://github.com/kedgeproject/kedge/pull/284


Make scalachess's Clock ready for 0.5+0

For https://github.com/ornicar/lila/pull/1206

please add a test case for this change. https://github.com/ornicar/scalachess/blob/master/src/test/scala/ClockTest.scala

@Unihedro Done.


Carla wastes CPU ressources in sync mode between ticks

Consider the following code snippet:
import carla
import time

client = carla.Client("localhost", 2000)
world = client.load_world("Town04")

settings = world.get_settings()
settings.fixed_delta_seconds = 0.05
settings.synchronous_mode = True
world.apply_settings(settings)

world.tick()
time.sleep(120)
world.tick()

Between the ticks Carla is frozen so I would expect it not to use much CPU resources, however actually Carla is always hogging the CPU:

It would be great if Carla wouldn't waste resources when there is no simulation to do.

Hi,
@hh0rva1h we will definitely try to keep improving the performance of CARLA and reducing the amount of computation needed. Now, while you are not ticking the server, the server is still doing stuff. At a minimum is listening for other possible clients (there could be more than 1 client trying to get things done).
We will try to make this aspect more efficient in the future. I will tag this issue as a feature request.

@germanros1987 Could you do something about stale bot closing issues that are triaged other than question? Imho it does not make much sense to close a issue triaged as bug or feature request automatically.