Validation imports not working from javax.validation

documentation pages need to be updated.

these imports are working, instead of documentation one's
https://hilla.dev/docs/tutorials/quickstart
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

We should find and replace all javax namespaces in the doc.

This was an old revision of the documentation, should be updated by now. Note that the URLs changed.


Improve docs

Updated readme and fixed and improved pyramid example. I have never used flask, so I'll leave that for someone else ;)

Coverage remained the same at 91.257% when pulling 5fe4a1c2162c27ea15f4058fbb3f2b50242b70e8 on tdamsma:improve-docs into 9abc7ceb1f4efb15bd70f87fdc10d9b876b4df1a on Pegase745:master.

No worries, the important thing that one of them is working again :smile: You rock thanks for all of this


The "ias_zone" status is changed by Converters Zigbee devices, but I don't kown how to do

After the homeassistant core update 2022.4.0 from 2022.3.8, some of my custom zigbee devices have no response when the state changes, and the zigbee in the log  "ias_zone" status is this format,  so I don't kown how to extract 33 or 32 or 0 in it.
Thanks.

after:
status_change_notification(zone_status=<ZoneStatus.Restore_reports|Alarm_1: 33>, extended_status=<bitmap8.0: 0>, zone_id=0, delay=0)

befor:
<ZoneStatus.Restore_reports|Alarm_1: 33>, <bitmap8.0: 0>, 0, 0
class fz_ias_contact_alarm_1(ZConverter):
    zigbee = "ias_zone"
    zattr = "contact"
    childs = {"tamper","battery_low"}
    def decode(self, device: "XDevice", payload: dict, value: dict):
        value = value.get("value")
        if isinstance(value, list) and len(value) == 4:
            payload["contact"] = (value[0] & 1) > 0
            payload["tamper"] = (value[0] & 1<<2) > 0
            payload["battery_low"] = (value[0] & 1<<3) > 0

the log:
2022-04-12 05:23:21 DEBUG (MainThread) [custom_components.xiaomi_gateway3.core.gateway] <IP_ADDRESS> [MQTT] gw/588E81FFFED91BE4/MessageReceived b'{"sourceAddress":"0xBDA3","eui64":"0x000D6F000FC72AB1","destinationEndpoint":"0x01","clusterId":"0x0500","profileId":"0x0104","sourceEndpoint":"0x01","APSCounter":"0xB4","APSPlayload":"0x096700210000000000","rssi":-58,"linkQuality":168}'
2022-04-12 05:23:21 DEBUG (MainThread) [custom_components.xiaomi_gateway3.core.gateway] <IP_ADDRESS> [ZIGB] 0x000d6f000fc72ab1 (0xbda3) recv {'endpoint': 1, 'seq': 103, 'cluster': 'ias_zone', 'command_id': 0, 'command': 'enroll_response', 'value': status_change_notification(zone_status=<ZoneStatus.Restore_reports|Alarm_1: 33>, extended_status=<bitmap8.0: 0>, zone_id=0, delay=0)}
2022-04-12 05:23:21 DEBUG (MainThread) [custom_components.xiaomi_gateway3.core.gateway] <IP_ADDRESS> [MQTT] zigbee/send b'{"cmd":"report","id":2000000200,"did":"lumi.d6f000fc72ab1","time":1649712201005,"rssi":-68,"zseq":0,"dev_src":"0"}'
2022-04-12 05:23:21 DEBUG (MainThread) [custom_components.xiaomi_gateway3.core.gateway] <IP_ADDRESS> [MQTT] gw/588E81FFFED91BE4/MessagePreSentCallback b'{"eui64":"0x000D6F000FC72AB1","destinationEndpoint":"0x01","clusterId":"0x0500","profileId":"0x0104","sourceEndpoint":"0x01","APSCounter":"0x00","APSPlayload":"0x00670B0000"}'
2022-04-12 05:23:21 DEBUG (MainThread) [custom_components.xiaomi_gateway3.core.gateway] <IP_ADDRESS> [ZIGB] 0x000d6f000fc72ab1 0xbda3 send {'endpoint': 1, 'seq': 103, 'cluster': 'ias_zone', 'command': '11', 'value': 0, 'status': 'Status.SUCCESS'}
2022-04-12 05:23:22 DEBUG (MainThread) [custom_components.xiaomi_gateway3.core.gateway] <IP_ADDRESS> [MQTT] log/ble b'{"did":"blt.3.14t8gpcjge800","eid":4100,"edata":"f000","pdid":152,"seq":245}'
2022-04-12 05:23:23 DEBUG (MainThread) [custom_components.xiaomi_gateway3.core.gateway] <IP_ADDRESS> [MQTT] gw/588E81FFFED91BE4/MessageReceived b'{"sourceAddress":"0xBDA3","eui64":"0x000D6F000FC72AB1","destinationEndpoint":"0x01","clusterId":"0x0500","profileId":"0x0104","sourceEndpoint":"0x01","APSCounter":"0xB5","APSPlayload":"0x096800200000000000","rssi":-65,"linkQuality":140}'
2022-04-12 05:23:23 DEBUG (MainThread) [custom_components.xiaomi_gateway3.core.gateway] <IP_ADDRESS> [ZIGB] 0x000d6f000fc72ab1 (0xbda3) recv {'endpoint': 1, 'seq': 104, 'cluster': 'ias_zone', 'command_id': 0, 'command': 'enroll_response', 'value': status_change_notification(zone_status=<ZoneStatus.Restore_reports: 32>, extended_status=<bitmap8.0: 0>, zone_id=0, delay=0)}
2022-04-12 05:23:23 DEBUG (MainThread) [custom_components.xiaomi_gateway3.core.gateway] <IP_ADDRESS> [MQTT] gw/588E81FFFED91BE4/MessagePreSentCallback b'{"eui64":"0x000D6F000FC72AB1","destinationEndpoint":"0x01","clusterId":"0x0500","profileId":"0x0104","sourceEndpoint":"0x01","APSCounter":"0x00","APSPlayload":"0x00680B0000"}'
2022-04-12 05:23:23 DEBUG (MainThread) [custom_components.xiaomi_gateway3.core.gateway] <IP_ADDRESS> [ZIGB] 0x000d6f000fc72ab1 0xbda3 send {'endpoint': 1, 'seq': 104, 'cluster': 'ias_zone', 'command': '11', 'value': 0, 'status': 'Status.SUCCESS'}

After searching for a while, I found that it was changed here:
Bump zigpy to 0.44.1 and zha-quirks to 0.0.69 (@puddly - https://github.com/home-assistant/core/pull/68921)
https://github.com/zigpy/zigpy/commit/68609263cc96cb279bb49612ecd559ea272b0ca2

client_commands: dict[int, ZCLCommandDef] = {
+client_commands: typing.Dict[int, ZCLCommandDef] = {
+    0x00: ZCLCommandDef(
+        "status_change_notification",
+        {
"zone_status": ZoneStatus,
"extended_status": t.bitmap8,
"zone_id": t.uint8_t,
"delay": t.uint16_t,
},
False,
),

New value is also list-compatible value. You are still can get value[0] element from it. But remove isinstance check.
https://github.com/AlexxIT/XiaomiGateway3/blob/9e049c856e71aa797380b70167eae25d2a24f398/tests/test_conv_silabs.py#L147-L156


[SUPPORT] Process killed with no additional info when loading large parquet files in Spark

Trying to load a 1.1 GB parquet file and it just exits with no message.  You can get the parquet file from https://forum.starrocks.io/t/retail-ecommerce-funnel-analysis-demo-with-1-million-members-and-87-million-record-dataset-using-starrocks/269
using ./spark-shell --driver-memory 4G with code
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._
import org.apache.spark.sql.Row
import org.apache.spark.sql.SaveMode._
import org.apache.hudi.DataSourceReadOptions._
import org.apache.hudi.DataSourceWriteOptions._
import org.apache.hudi.config.HoodieWriteConfig._
import scala.collection.JavaConversions._

val df = spark.read.parquet("s3a://huditest/user_behavior_sample_data.parquet")

val databaseName = "hudi_sample"
val tableName = "hudi_coders_hive"
val basePath = "s3a://huditest/hudi_coders"

df.write.format("hudi").
  option(org.apache.hudi.config.HoodieWriteConfig.TABLE_NAME, tableName).
  option(RECORDKEY_FIELD_OPT_KEY, "UserID").
  option(PRECOMBINE_FIELD_OPT_KEY, "UserID").
  option("hoodie.datasource.hive_sync.enable", "true").
  option("hoodie.datasource.hive_sync.mode", "hms").
  option("hoodie.datasource.hive_sync.database", databaseName).
  option("hoodie.datasource.hive_sync.table", tableName).
  option("hoodie.datasource.hive_sync.metastore.uris", "thrift://hive-metastore:9083").
  option("fs.defaultFS", "s3://huditest/").
  mode(Overwrite).
  save(basePath)

error message is
warning: one deprecation; for details, enable `:setting -deprecation' or `:replay -deprecation'
29623 [main] WARN  org.apache.hudi.common.config.DFSPropertiesConfiguration  - Cannot find HUDI_CONF_DIR, please set it as the dir of hudi-defaults.conf
29641 [main] WARN  org.apache.hudi.common.config.DFSPropertiesConfiguration  - Properties file file:/etc/hudi/conf/hudi-defaults.conf not found. Ignoring to load props file
29666 [main] WARN  org.apache.hudi.HoodieSparkSqlWriter$  - hoodie table at s3a://huditest/hudi_coders already exists. Deleting existing data & overwriting with new data.
31627 [main] WARN  org.apache.hudi.metadata.HoodieBackedTableMetadata  - Metadata table was not found at path s3a://huditest/hudi_coders/.hoodie/metadata
32069 [main] WARN  org.apache.hadoop.fs.s3a.S3ABlockOutputStream  - Application invoked the Syncable API against stream writing to hudi_coders/.hoodie/metadata/files/.files-0000_00000000000000.log.1_0-0-0. This is unsupported
35905 [Executor task launch worker for task 0.0 in stage 7.0 (TID 7)] WARN  org.apache.hadoop.metrics2.impl.MetricsConfig  - Cannot locate configuration: tried hadoop-metrics2-hbase.properties,hadoop-metrics2.properties
./spark-shell: line 47:  2169 Killed                  "${SPARK_HOME}"/bin/spark-submit --class org.apache.spark.repl.Main --name "Spark shell" "$@"

@alberttwong Are you running on local mode? Parquet files are compressed, so uncompressed data might be more and probably need more memory. Can you try increasing driver-memory.

@alberttwong Also can you try once, spark.read.parquet(1 gb parquet file) and see if spark is able to process that with 4 GB of memory.

Tried ./spark-shell --driver-memory 8G --executor-memory 8G and getting same error.  It's just process killed.

@alberttwong Are you running spark on local mode? Could you read this parquet file using spark.read.parquet ?

I am running it in local mode. when you say read this parquet file using spark.read.parquet?  What do you mean?

upgrading from hudi 0.11 to 0.14.1
[root@spark-hudi bin]# spark-shell --packages org.apache.hudi:hudi-spark$SPARK_VERSION-bundle_2.12:0.14.1 --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer' --conf 'spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog' --conf 'spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension' --conf 'spark.kryo.registrator=org.apache.spark.HoodieSparkKryoRegistrar' --driver-memory 4G
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform (file:/spark-3.2.1-bin-hadoop3.2/jars/spark-unsafe_2.12-3.2.1.jar) to constructor java.nio.DirectByteBuffer(long,int)
WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
:: loading settings :: url = jar:file:/spark-3.2.1-bin-hadoop3.2/jars/ivy-2.5.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
Ivy Default Cache set to: /root/.ivy2/cache
The jars for the packages stored in: /root/.ivy2/jars
org.apache.hudi#hudi-spark3.2-bundle_2.12 added as a dependency
:: resolving dependencies :: org.apache.spark#spark-submit-parent-9b4a8c4b-e4e2-4b55-b29b-cacc399b9481;1.0
        confs: [default]
        found org.apache.hudi#hudi-spark3.2-bundle_2.12;0.14.1 in central
:: resolution report :: resolve 202ms :: artifacts dl 2ms
        :: modules in use:
        org.apache.hudi#hudi-spark3.2-bundle_2.12;0.14.1 from central in [default]
        ---------------------------------------------------------------------
        |                  |            modules            ||   artifacts   |
        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
        ---------------------------------------------------------------------
        |      default     |   1   |   0   |   0   |   0   ||   1   |   0   |
        ---------------------------------------------------------------------
:: retrieving :: org.apache.spark#spark-submit-parent-9b4a8c4b-e4e2-4b55-b29b-cacc399b9481
        confs: [default]
        0 artifacts copied, 1 already retrieved (0kB/7ms)
24/02/19 18:15:49 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
24/02/19 18:15:57 WARN Utils: Service 'SparkUI' could not bind on port 4041. Attempting port 4042.
Spark context Web UI available at http://spark-hudi:4042
Spark context available as 'sc' (master = local[*], app id = local-1708366558050).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 3.2.1
      /_/

Using Scala version 2.12.15 (OpenJDK 64-Bit Server VM, Java <IP_ADDRESS>)
Type in expressions to have them evaluated.
Type :help for more information.

scala> import org.apache.spark.sql.functions._
import org.apache.spark.sql.functions._

scala> import org.apache.spark.sql.types._
import org.apache.spark.sql.types._

scala> import org.apache.spark.sql.Row
import org.apache.spark.sql.Row

scala> import org.apache.spark.sql.SaveMode._
import org.apache.spark.sql.SaveMode._

scala> import org.apache.hudi.DataSourceReadOptions._
import org.apache.hudi.DataSourceReadOptions._

scala> import org.apache.hudi.DataSourceWriteOptions._
import org.apache.hudi.DataSourceWriteOptions._

scala> import org.apache.hudi.config.HoodieWriteConfig._
import org.apache.hudi.config.HoodieWriteConfig._

scala> import scala.collection.JavaConversions._
import scala.collection.JavaConversions._

scala>

scala> val df = spark.read.parquet("s3a://huditest/user_behavior_sample_data.parquet")
df: org.apache.spark.sql.DataFrame = [UserID: bigint, ItemID: bigint ... 3 more fields]

scala>

scala> val databaseName = "hudi_sample"
databaseName: String = hudi_sample

scala> val tableName = "hudi_coders_hive"
tableName: String = hudi_coders_hive

scala> val basePath = "s3a://huditest/hudi_coders"
basePath: String = s3a://huditest/hudi_coders

scala>

scala> df.write.format("hudi").
     |   option(org.apache.hudi.config.HoodieWriteConfig.TABLE_NAME, tableName).
     |   option(RECORDKEY_FIELD_OPT_KEY, "UserID").
     |   option(PRECOMBINE_FIELD_OPT_KEY, "UserID").
     |   option("hoodie.datasource.hive_sync.enable", "true").
     |   option("hoodie.datasource.hive_sync.mode", "hms").
     |   option("hoodie.datasource.hive_sync.database", databaseName).
     |   option("hoodie.datasource.hive_sync.table", tableName).
     |   option("hoodie.datasource.hive_sync.metastore.uris", "thrift://hive-metastore:9083").
     |   option("fs.defaultFS", "s3://huditest/").
     |   mode(Overwrite).
     |   save(basePath)
warning: one deprecation; for details, enable `:setting -deprecation' or `:replay -deprecation'
24/02/19 18:16:18 WARN HoodieSparkSqlWriterInternal: hoodie table at s3a://huditest/hudi_coders already exists. Deleting existing data & overwriting with new data.
24/02/19 18:16:21 WARN S3ABlockOutputStream: Application invoked the Syncable API against stream writing to hudi_coders/.hoodie/metadata/files/.files-0000-0_00000000000000010.log.1_0-0-0. This is unsupported
/spark/bin/spark-shell: line 47: 12322 Killed                  "${SPARK_HOME}"/bin/spark-submit --class org.apache.spark.repl.Main --name "Spark shell" "$@"

I also tried to upgrade spark to 3.4 from 3.2 and still use Hudi 0.14.1 and it still process killed.

[root@spark-hudi jars]# ls *aws*
aws-java-sdk-bundle-1.12.48.jar  hadoop-aws-3.3.1.jar

I tried to write the scala code another way and still have the same process killed issue.
import org.apache.hudi.QuickstartUtils._
import scala.collection.JavaConversions._
import org.apache.spark.sql.SaveMode._
import org.apache.hudi.DataSourceReadOptions._
import org.apache.hudi.DataSourceWriteOptions._
import org.apache.hudi.config.HoodieWriteConfig._
import org.apache.hudi.common.model.HoodieRecord
val tableName = "hudi_trips_cow"
val basePath = "s3a://hudi/hudi_trips_cow"
val df = spark.read.parquet("s3a://huditest/user_behavior_sample_data.parquet")
df.write.format("hudi").
options(getQuickstartWriteConfigs).
option(PRECOMBINE_FIELD_OPT_KEY, "UserID").
option(RECORDKEY_FIELD_OPT_KEY, "UserID").
option(PARTITIONPATH_FIELD_OPT_KEY, "CategoryID").
option(TABLE_NAME, tableName).
  option("hoodie.datasource.hive_sync.enable", "true").
  option("hoodie.datasource.hive_sync.mode", "hms").
  option("hoodie.datasource.hive_sync.database", "hudi_sample").
  option("hoodie.datasource.hive_sync.table", tableName).
  option("hoodie.datasource.hive_sync.metastore.uris", "thrift://hive-metastore:9083").
mode(Overwrite).
save(basePath)

@alberttwong Thanks for trying all that. I issue here is not the code but memory. I guess you will be able to run same code with small parquet size.
Can you try to do df.write.format("parquet").save("some test parquet path") and see if that works.
If that also fails, then certainly this file is too big to process in available resources.

I have confirmed that ingestion of the 1.1 GB file works fine on onehouse.ai.

I had to allocate more memory for docker desktop.   That fixed the issue.

Had working session with @alberttwong . The issue was docker instance was not given enough memory. We were able to read it using 8 GB memory. Closing this out. Thanks again @alberttwong .

I would also add that since the parquet was compressed with zippy, this is why spark had a tough time with processing the file.  You can either 1. increase memory or 2. break up the parquet file into smaller files.
Also had to run driver memory with a lot of memory.   executor memory was not needed since running spark locally.
spark-shell --packages org.apache.hudi:hudi-spark$SPARK_VERSION-bundle_2.12:0.14.1 --driver-memory 24G


Fixed #24784 -- Fixed visibility regression in admin's FK widget.

Fixes that problem on Arch Linux.


pull request for e2e test at 12/13/2016 14:56:03

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


[Infra] A way for specially designated USDR admin to easily access a list of all users

https://www.notion.so/usdr/Download-a-list-of-all-users-8f7f92aed44b49fbabf93136bd3b1bb3

There is already some back-end code to support this: https://github.com/usdigitalresponse/usdr-gost/blob/cd1c4eb3bbc5170e973f451586d9f0bf0eebd7f7/packages/server/src/lib/userImporter.js#L89

Would prefer integrating directly with our CRM.


Labels on the planet rotate

The description on the planet should remain horizontal even when the planet is rotating. I have spent some time on it but could not figure out how to solve this.

I love this so much haha.

My opinion is that we should have a static, non-rotating summary info box on the right hand side which will display this information on click. There will be some kind of marker ( >> Click here for more info or the like) which will take us to the organogram view.

My opinion is that we should have a static, non-rotating summary info box on the right hand side which will display this information on click.

I like this idea. If you go for this you can create a Msg to create this content so it doesnt have to be writen in the html. The flow would work something like:

onClick event listeners on each planet that updates state
summary box checks model and value from a record/ object (eg reachTeam : "A multi positional team...")

@maxgerber @astroash coollliooooo!!! I like both ideas! I think it makes much more sense...that way another thing not to worry about :)

@astroash @maxgerber I followed your approach and updated the PR #15 .  And with this done, I am gonna relax ;) u guys r the best ❤


HDDS-2626. Avoid hostname lookup for invalid local IP addresses

What changes were proposed in this pull request?
Skip hostname lookup for invalid IP addresses of the local host in OzoneSecurityUtil#getValidInetsForCurrentHost.  This only affects the log message, not any functionality.
https://issues.apache.org/jira/browse/HDDS-2626
How was this patch tested?
Previously:
[INFO] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 142.699 s - in org.apache.hadoop.ozone.TestHddsSecureDatanodeInit
[INFO] Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 74.919 s - in org.apache.hadoop.ozone.TestSecureOzoneCluster

After the change:
[INFO] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.79 s - in org.apache.hadoop.ozone.TestHddsSecureDatanodeInit
[INFO] Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 35.065 s - in org.apache.hadoop.ozone.TestSecureOzoneCluster

CI is not improved, since it runs in a container without strange network interfaces:
[INFO] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.158 s - in org.apache.hadoop.ozone.TestHddsSecureDatanodeInit

@xiaoyuyao please review when you have some time

Thanks @arp7 for the review.


Albert launcher has a fixed border

Please consult the issue guidelines at
https://github.com/vaxerski/Hyprland/blob/main/docs/ISSUE_GUIDELINES.md
BEFORE submitting.
similar bug visually to #271

no explanation whatsoever
linking to #271, why not just comment there then??


EventReader iter can skip events if interrupted

Bevy version
0.4
Operating system & version
Ex: Windows 10, Ubuntu 18.04, iOS 14.
What you did
Ran the example here: https://github.com/alice-i-cecile/understanding-bevy/blob/afe2d7dff009037f2f272c0dff18fab14af64aa2/src/ecs/systems-queries_code/examples/concurrency.rs
What you expected to happen
Each event should be processed in order.
What actually happened
Most events are skipped, because the system runs out of time to process them and EventReader.iter() updates its internal counter all the way to the end of the current queue. This is documented but is surprising behavior that is likely generally unhelpful.
Additional information
Exposing the current length of the EventReader would also be helpful for similar tasks :)

EventReader.earliest and EventReader.latest have the same behavior, with even stranger consequences for most use cases, and so don't get around this issue.

For the use pattern outlined in my example, I'm fine manually updating the Events, rather than using the double buffer from Events::update. But in order to do so, I would want a nice way to pop off one event at a time (you should also be able to remove one particular event), rather than having to do something terrible with drain or clear and then reconstructing the events at the end of the stage.

The "bug" in your code is that you fail to process events on the frame (or the frame after) they were produced.
I think the crux of this issue is that you would prefer event queues with unbounded allocations. The "double buffered" approach we use by default ensures that if events are not processed within a given frame (or the frame after), they will be freed / not take up space in the queue. I think this is a desirable default for most events because users won't process most events by default. It keeps the total allocations and the cost of readers low. From an efficiency perspective I think the current approach is basically optimal for games. And the "you must handle events each frame" constraint is pretty reasonable imo. Every other major engine has the same constraints, they just have a different interface (ex: register an event handler for a specific event type instead of using a system).
There will be some cases where unbounded event queues are desirable, but its the sort of thing you need to specifically code around, otherwise you risk allocating memory ad-infinitum.

But adding an option to "pop off" a single event sounds like a reasonable add.

Yeah, I did a bunch more digging into this after filing an issue. I was trying to use Bevy's events as if they were consuming, whereas they by default work on a pub-sub / double buffer paradigm.
Adding a couple of methods to Event for pop from end and pop specific event would let us comfortably support the rarer, consuming form with a bit of leg work on the part of the user (you can just avoid calling Event::update() for your event type) but leave the rest of the design untouched :)

This can be resolved with ManualEventReader, and the proposed pattern is better handled by the planned async systems. Closing this.


How to connect with LGSVL?

Hello @kuriatsu,
As mentioned in the title, how would we connect this Logitech G29 force feedback with LGSVL simulator? I have tried to install ROS2 bridge for LGSVL, but it is not working at all.
Thank you

I have tried ROS1 bridge, but never tried ROS2 bridge.
I cannot support ros2 bridge if it's a matter of LGSVL developer.
If there are some problems in the connection between ros2 bridge and g29-force-feedback node, I can support you.

@kuriatsu,
Thank you for the fast reply.
I have installed ros2 bridge according to LGSVL official documentation and tried to run it along with g29-force-feedback simultaneously. This connection was not working as they weren't detecting each other. Am I doing it wrong, and what should I do in this situation?
This was the link I used to install ros2 nodes in LGSVL and create a subscriber node:
https://www.svlsimulator.com/docs/tutorials/create-ros2-ad-stack/#running-ros2-lgsvl-bridge

OK, I understood.
You need to create a new node that subscribes steering information from LGSVL via ros2 bridge (maybe /simulator/control/command as described in the URL you pasted) and publish the steering angle to /ff_target message.

Maybe you just run this command and be able to connect g29_node with lgsvl.

Thank you very much! I will try this and check if it's working.

I ran this code and it gave me the following error:

NameError: name 'TwistStamped' is not defined

What is causing this error?

Alright, so I used the following code:
import rclpy
from rclpy.node import Node
from ros_g29_force_feedback.msg import ForceFeedback
from geometry_msgs.msg import TwistStamped

class Lgsvl2G29Steering(Node):
    def __init__(self):
        super().__init__('lgsvl_to_g29_steering_node')

        self.sub_image = self.create_subscription(TwistStamped, '/simulator/control/command', self.callback)
        self.publisher = self.create_publisher(ForceFeedback,"/ff_target", 10)

    def callback(self, msg):
        out_msg = ForceFeedback()
        out_msg.header.stamp = self.get_clock().now().to_msg()

        steering_angle = msg.twist.angular.x
        out_msg.position = steering_angle
        out_msg.torque = 0.8
        self.publisher.publish(out_msg)

def main(args=None):
    rclpy.init(args=args)
    lgsvl_to_g29_steering = Lgsvl2G29Steering()
    rclpy.spin(lgsvl_to_g29_steering)

if __name__ == '__main__':
    main()

But I'm still getting the following error while running it:

Traceback (most recent call last):
  File "lgsvl_control.py", line 30, in
    main()
  File "lgsvl_control.py", line 25, in main
    lgsvl_to_g29_steering = Lgsvl2G29Steering()
  File "lgsvl_control.py", line 11, in init
    self.sub_image = self.create_subscription(TwistStamped, '/simulator/control/command', self.callback)
TypeError: create_subscription() missing 1 required positional argument: 'qos_profile'

What is this 'qos_profile' and how do I set it up?

Sorry, 1 mistake at create_subscription
import rclpy
from rclpy.node import Node
from ros_g29_force_feedback.msg import ForceFeedback

class Lgsvl2G29Steering(Node):
    def __init__(self):
        super().__init__('lgsvl_to_g29_steering_node')

        self.sub_image = self.create_subscription(TwistStamped, '/simulator/control/command', self.callback, 10)
        self.publisher = self.create_publisher(ForceFeedback,"/ff_target", 10)

    def callback(self, msg):
        out_msg = ForceFeedback()
        out_msg.header.stamp = self.get_clock().now().to_msg()

        steering_angle = msg.twist.angular.x
        out_msg.position = steering_angle
        out_msg.torque = 0.8
        self.publisher.publish(out_msg)

def main(args=None):
    rclpy.init(args=args)
    lgsvl_to_g29_steering = Lgsvl2G29Steering()
    rclpy.spin(lgsvl_to_g29_steering)

if __name__ == '__main__':
    main()


Move function wrappers into simplified interface

Move function wrappers into simplified interface and remove function argument (replace by closures) to fix tests on git master. Not sure if this is the "correct" way to do this compared to the comment on https://github.com/JuliaLang/julia/pull/13412, but it does work.
Update: It works for simple cases, but not when the RHS is a closure.

This is definitely a breaking change between 0.4 and the latest master, so I suppose some version check will be needed for these changes. Not sure what is the recommended way to implement that.

Update: It works for simple cases, but not when the RHS is a closure.

Is that statement for v0.4? It should work on v0.5 since anonymous functions are generic in that case. But if closures aren't working with it in v0.5, I'd count that as a non-starter since I can point to a lot of examples where people are using closures to put in parameters. Anyways, this is not actionable unless tests pass. You should relabel this WIP if you plan on continuing this, or close.
@alyst was this touched in #67? I don't recall seeing changes to the function wrappers. Is this affected by the changes?

@ChrisRackauckas It was somewhat touched, in the sense that userdata parameter was declared to be of type Any directly by the wrapper generator, so simplified interface implementation had to be updated and now it should allow Julian closures, i.e. passing Julia user data to the Julia function through the low-level wrapper.
I'm not sure we need to move the wrapper functions into the bodies of the simplified interface function.
Maybe it's worth investigating what is the overhead of the current wrapper implementation and whether there are ways to improve it (e.g. parameterize UserDataAndFunction by the type of user data and make it immutable). I left it out of the #67 scope.
CVODE/IDA allows specifying the other user functions, e.g. IDADlsSetDenseJacFn() (see ida_Roberts_dns.jl example). Currently they are not supported.

Sounds like this is relevant to the discussion JuliaDiffEq/Roadmap#2

I've been following Julia development and using v0.5/master in my work for a while, but haven't touched the Sundials portion for a bit. I believe the issue with ccallable closures was present in v0.4 and has been (at least partially) resolved recently; the change in this PR fixed some issues on the then-current master, but not all.

See also https://github.com/JuliaLang/julia/issues/1096

Was it not resolved by JuliaLang/julia#13412 now that anonymous functions are all generic?

No: the issue I was trying to work around was caused by that; Ref{Function} no longer made sense. Ptr{Void} does though.

I see.

No longer relevant.


Incorrect HTTPMethod logged on ReadTimeout

Summary
This one is pretty simple to explain and reproduce.
The issue is that on READ timeouts, the HTTPLog plugin will log the method as a GET - no matter what the real HTTPMethod was.
In the stdout/err logs, we can see that the correct HTTP method is logged. But it doesn't see to be correctly populated in the ngx.req.get_method() context variable.
Steps To Reproduce

Create a simple service & route
Set the read timeout to be really low so you're guaranteed to fail
Send a POST - and check the value of ngx.req.get_method() when the HTTP log plugin runs
This value will incorrectly report that the request was a 'GET'

Additional Details & Logs

Kong version 0.14.1
Operating system: Kong Alpine

Hi,
This is a known issue, as highlighted in #3533. See:

Currently, ngx.req.get_method() in the error_page location block
will return GET even if the request method was different (only
HEAD is preserved). A follow up patch for Nginx is being prepared.
As such, several tests are currently marked as "Pending".

Applying this nginx patch (along with the necessary nginx config changes) will resolve the issue:
https://github.com/openresty/openresty/pull/396

Glad to see you took the initiative to address this thibaultcha at the openresty layer long ago when you added l4 logging functionalities. Guess we will just keep this in our back pocket as a known issue and await openresty to accept your pr into a new release Kong can bundle with 👍 .

We're encountering this as well. Is there a fix for this in our roadmap?

Right, yeah looks like they haven't gotten it merged into OpenResty yet. Hopefully it can be brought in at some point because I too still run into debug sessions with confused customers who ask me why logs show GET http method displayed when they adamantly did a POST 😄 .

Hi folks,
I opened https://github.com/Kong/kong/pull/5073 yesterday night which will fix the issue without requiring any NGINX patches as well as another issue with URI arguments too. Please give it a shot if you have a chance to :+1:

@thibaultcha I was just pondering this last night for some reason. Figured there would be an easy implementation to basically do what we do for logging the ctx essentially awhile back but add logic to capture the real method/query parameters in a phase prior to the redirect only to be able to be referenced later in the error block. I assume thats whats being done under the hood any any login plugins that intend to take advantage of this in 1.4 need to be using the pdk references to those values rather than ngx.* directly. Will refactor and test when a 1.4rc comes out with your changes!


Rough in a more robust version of infer_pattern in its own file

This PR includes some commented out code I was using to test it, but it uncovered an issue with how we're handling inference that will require adding more common fields to each inference type.  I want to change how inference types are structured so that it's easier to iterate on them without so much boilerplate.  This will happen in a series of PRs once this lands.

Codecov Report

Merging #90 (910f785) into main (8456d99) will decrease coverage by 4.59%.
The diff coverage is 0.80%.

@@            Coverage Diff             @@
##             main      #90      +/-   ##
==========================================
- Coverage   90.88%   86.28%   -4.60%
==========================================
  Files          22       23       +1
  Lines        2348     2472     +124
==========================================
- Hits         2134     2133       -1
- Misses        214      339     +125

Impacted Files
Coverage Δ

src/codegen/d_ts.rs
80.23% <ø> (ø)

src/infer/context.rs
91.54% <0.00%> (-5.47%)
:arrow_down:

src/infer/infer_mem.rs
94.00% <ø> (ø)

src/infer/infer_pattern.rs
0.00% <0.00%> (ø)

src/infer/substitutable.rs
76.36% <0.00%> (-4.41%)
:arrow_down:

src/types.rs
69.38% <0.00%> (-5.98%)
:arrow_down:

tests/integration_test.rs
98.56% <ø> (ø)

src/infer/infer.rs
91.71% <7.69%> (-3.07%)
:arrow_down:

Continue to review full report at Codecov.

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

We can worry about coverage later.


Doesn't work when reddit preferences is set to use old reddit on standard reddit URLs

It works on new reddit UI when "Use new Reddit as my default experience" is checked, but it doesn't work on standard URLs when it's unticked. I've been trying to figure out why the extension was working for me in incognito mode, I understand why now lol.

Same issue here, did you ever find a way to fix it other than setting New Reddit as the default?

Nah, but this kinda works: https://greasyfork.org/en/scripts/407466


"Gura Ialomiței" is listed in the drop-down menu

Description:
When user writes "Gura Ialomiței" the location appears in the drop-down menu next to the comune and the county witch is a part according to the law
Precondition:
The website is up an running.

Step 1
Write in the search bar "Gura Ialomiței"
Expected results
The location appears in the drop-down menu as "Comuna Gura Ialomiței, IALOMIȚA"


DOC: fix dead link

Fix link to "Generalized Universal Function API" of Numpy's doc

Great, thank you @bzah !


Details on how to try the Raiden Demo dApp

An updated readme with more detailed instructions in a step-by-step guide on how to try out the Raiden Demo dApp.
What remains to be improved is adding some screenshots (need to decide which are best suited) and updating the hub to a 24/7 Raiden node.

Good job @taleldayekh looks good. I added a couple of questions I'm not sure about.

Thank you @nephix, and thanks for having a look!


⚠ Jenkins Plugins Artifactory has degraded performance

In ba6c623, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 2603 ms

Resolved: Jenkins Plugins Artifactory performance has improved in 9cd05ff after 13 minutes.


Allow to have 'value' as a parameter identifier in annotated methods

Currently it is not possible to have a parameter named value in methods annotated with @GET/POST/PUT...
I'm in the complex process of setting up retrofit.dart to generate an API Client from an OpenAPI specification file, which itself is generated by api-platform, the boilerplate code of which is also generated. (by a custom built code-generator based on php-generator)
To make a long story shorter, this means that the method parameters in my RestClient have identifiers based on the column names of the underlying database. Here is an example of such a method :
  /// Updates the ExampleEndpoint resource.
  @PATCH('/api/example_endpoint/{idExampleEndpoint}')
  Future<ExampleEndpoint> exampleEndpointPatch(
    @Path() String idExampleEndpoint, {
    @Field('idClient') int? idClient,
    @Field('value') String? value,
    @Field('description') String? description,
    @Field('createdAt') String? createdAt,
    @Field('updatedAt') String? updatedAt,
    @Field('deletedAt') String? deletedAt,
    @Field('client') String? client,
  });

The lack of control I have on the identifiers causes this of course. I could rename the parameter since I have an @Field() annotation anyway, but I want to limit the chance of runtime errors and special cases in my generation code. This happens mostly in PATCH methods, but also affects some filters for GET methods. Here's the generated code for this specific method :
  @override
  Future<ExampleEndpoint> exampleEndpointPatch(
    String idExampleEndpoint, {
    int? idClient,
    String? value,
    String? description,
    String? createdAt,
    String? updatedAt,
    String? deletedAt,
    String? client,
  }) async {
    const _extra = <String, dynamic>{};
    final queryParameters = <String, dynamic>{};
    queryParameters.removeWhere((k, v) => v == null);
    final _headers = <String, dynamic>{};
    final _data = {
      'idClient': idClient,
      'value': value,
      'description': description,
      'createdAt': createdAt,
      'updatedAt': updatedAt,
      'deletedAt': deletedAt,
      'client': client,
    };
    _data.removeWhere((k, v) => v == null);
    final _result = await _dio
        .fetch<Map<String, dynamic>>(_setStreamType<ExampleEndpoint>(Options(
      method: 'PATCH',
      headers: _headers,
      extra: _extra,
    )
            .compose(
              _dio.options,
              '/api/example_endpoint/${idExampleEndpoint}',
              queryParameters: queryParameters,
              data: _data,
            )
            .copyWith(
                baseUrl: _combineBaseUrls(
              _dio.options.baseUrl,
              baseUrl,
            ))));
    final value = ExampleEndpoint.fromJson(_result.data!);
    return value;
  }

Which results in the value parameter clashing with the final value declaration.
I'm not yet super familiar with retrofit.dart, so this might not be ideal, but changing the value of _valueVar from 'value' to '_value' in generator/lib/src/generator.dart seems to solve the issue for me, and would allow to use value as an identifier for method parameters in the package user's RestClient class.
It also seems to me like the current value of _valueVar, 'value', is hard-coded in some places, and should be using _valueVar or $_valueVar to lessen the risk of bugs in the generated code in case of edits. Again, I'm not quite familiar with the code, so I'd appreciate a look-over make sure the edits I've made are indeed correct.
Additionally, the local queryParameter variable in the generated code suffers from this as well. I haven't modified it in this branch yet, but I could if deemed necessary.

Thanks for the contribution.
Pls fix the test error. You can run the following commands in your local environment.
      - name: Generate code
        run: cd example && dart pub get && dart pub run build_runner build --delete-conflicting-outputs
      - name: Analyze packages
        run: PKGS="example retrofit generator" ./tool/travis.sh dartanalyzer

@IcarusSosie
Will you have time to update the tests?
I'll fork, update tests and create a new PR if you don't have the time.
It's breaking swagger_parser

Hi !
Sorry for taking so long to get back to this, life got in the way these last few months.
I've edited the tests to match the new expected variable name _value . Tests are passing on my machine.
I've fixed a few spots where I'd wrongly assumed _valueVar should be used instead of "value", namely the calls to r.peek("value"). One of theses edits was causing some tests to fail, but not the others. I'm wondering if maybe this is a blind-spot in the tests, for which it would be nice to have extra test cases, but I'm not familiar enough with the generator to know if this is required. @trevorwang I would appreciate you input on this if you have the time.
Again, I'm sorry I left this issue hanging for so long :open_mouth:


tools.python.CallFunction macro

Request
I'm very happy to see that carapace has bridges for some of the more popular python cli framework completion tools (click, argcomplete)
Every time one of these bridges is invoked, it executes the named python cli tool (ie watson in the example documentation) in a zsh completion context and lets the python cli framework's own cli completion logic produce completion candidates for carapace to use
The only problem i have with this approach is the heavy performance cost. every time completion is requested for one of these python tools, it executes the python cli app in a subprocess, which imports the whole tree of python modules depended on by that cli tool (most of which won't be needed), constructs the entire argument parser tree generated by the CLI framework (ie click or argparse/argcomplete) and then executes completion code in python to generate completions.
This is fine for small CLI apps, but quickly becomes VERY noticable to end users for larger CLI apps with nested trees of commands (sometimes >3 second delay between user hitting <TAB> and carapace returning values)
My idea to solve this is to pre-generate carapace Specs for each of my python cli tools, to be installed as part of the cli tool installation process. I'm writing a tool at the moment which takes a click.Group object, introspects it, and generates a carapace Spec yaml file
So far, this approach is proving very promising! every feature / capability expressible in a click CLI parser can be directly mapped to a carapace Spec option.
The only place where this falls short is in custom completion functions. Many python CLI frameworks allow you to specify python functions to execute during shell completions. These functions take in some object representing the current state of the parser (ie. which flags have been parsed so far, what positional arguments have been provided so far, their values, etc), as well as a string representing the current word being completed. These functions are expected to return a list of strings representing viable completion candidates.
here's a concrete example:
def completion_function(ctx, param, incomplete):
    return [k for k in os.environ if k.startswith(incomplete)]

@click.command()
@click.argument("name", shell_complete=completion_function)
def cli(name):
    click.echo(f"Name: {name}")
    click.echo(f"Value: {os.environ[name]}")

Proposed solution
I would love to see a custom macro that could be invoked something like this:
name: example-python
completion:
  positional:
    - ["$carapace.tools.python.CallFunction(my_package.my_module:completion_function)"]

which, when invoked, would do the following:

serialize all carapace variables (flags, args, everything available via https://carapace-sh.github.io/carapace-spec/carapace-spec/variables.html) into a JSON string
exec something like python -c 'from python_package.python_module import completion_function; print(completion_function("<carapace variables json string>"))
collect the results in much the same way you would with the "exec" macro (ie. ["$(echo -e 'a\nb\nc')"])

Anything else?
we can already very nearly get there with:
name: example-python
completion:
  positional:
    - ["$(python -c 'from python_package.python_module import completion_function; print(completion_function(\"${C_VALUE}\")))"]

but:

there's no effective way to pass in all carapace values
the nested brackets and double-nested double-quotes are gnarly, hard reason about, and all too easy to mess up.

Also, as a side note, i think this feature would be of value to anyone using carapace-bin, not just python CLI app authors.
With this feature, anyone writing custom carapace spec files could leverage this to write custom completion functions

Yeah. the slow startup time of python is an issue. But it's also how click works.
The spec generation is a good approach, i've already got a couple scrapers for other frameworks.
Not sure about the function call though. There's also Context and Paramater in shell_complete so it's a bit more complicated.
In theory the application could be bridged at a given position with the full command line to let the click parser do it's job.
But that's not available anymore at that point.

For simple stuff this might works (just needs to get rid of positional args for flags with shift):
# yaml-language-server: $schema=https://carapace.sh/schemas/command.json
name: example
commands:
  - name: sub
    flags:
      -s, --string=: some string
    completion:
      flag:
        string: ["$carapace.bridge.Click([example, sub, --string]) | shift(99)"]
      positional:
        - [one, two]

Thanks, That's very helpful!
I still wish we could have a macro of some kind to pass parsed args and opts into the called program.
It would be incredibly useful to enable shell completion in CLI frameworks that don't currently have / support shell completion, like for example the cyclopts project, which I've had my eye on for a while

Those are avalable as environment variables and positional arguments ($@):
# yaml-language-server: $schema=https://carapace.sh/schemas/command.json
name: context
persistentflags:
  -p, --persistent: persistent flag
commands:
  - name: sub
    flags:
      -s, --string=: string flag
      -b, --bool: bool flag
      --custom=: custom flag
    completion:
      flag:
        custom: ["$(env)"]

context --persistent sub --string one -b arg1 arg2 --custom C_[TAB]
# C_ARG0=arg1
# C_ARG1=arg2
# C_FLAG_BOOL=true
# C_FLAG_STRING=one
# C_VALUE=C_

Wow, that is incredibly useful undocumented behaviour!
id be happy to close this issue and submit a PR to add this to the exec macro’s documentation, if you’d like

Sure, you can also link this in the documentation.

Excellent, will do!
btw, one thing I’m not clear on in the variables document: “…  during multipart completion“
What is multipart completion?

https://carapace-sh.github.io/carapace/carapace/defaultActions/actionMultiParts.html
There's still a lot to do on the specs, which is why the documentation is so lacking.

see also the examples at https://carapace-sh.github.io/carapace/carapace/context.html#examples

Fantastic! Thank you for the extra resources! As a non-golang-developer, I hadn’t thought to look at the carapace library docs for extra info. I’ll be sure to link to those pages as well where appropriate

Also, for adding to exec documentation, I plan to add a more thorough “real-world” example for how to use the exec macro with parsed arg environment variables.
Note to self since I’m on mobile and can’t test code right now:
# yaml-language-server: $schema=https://carapace.sh/schemas/command.json
name: context
persistentflags:
  -p, --persistent: persistent flag
commands:
  - name: sub
    flags:
      -s, --string=: string flag
      -b, --bool: bool flag
      --custom=: custom flag
    completion:
      flag:
        custom: ["$(python -c 'from my_package.my_module import completion_function; completion_function())"]

# my_package/my_module.py

import os

def completion_function():
    # all opts and args already parsed by carapace are provided as env vars
    # if user typed `context --persistent sub --string one -b arg1 arg2 --custom unfinished-word-` and hit <TAB>,  then os.environ would contain
    # C_ARG0=arg1
    # C_ARG1=arg2
    # C_FLAG_BOOL=true
    # C_FLAG_STRING=one
    # C_VALUE=unfinished-word-
   completion_candidates = … # completion logic goes here
    for candidate in completion_candidates:
        print(candidate)
        # or if you’re feeling fancy
        print(f”{candidate}\tcandidate description”)

btw, while testing the newly-documented behaviour discussed here, i noticed that caparace doesn't include any flags "outside the current scope" in the context that it passes into executed commands.
ie: in your example above,
context --persistent sub --string one -b arg1 arg2 --custom C_[TAB]
# C_ARG0=arg1
# C_ARG1=arg2
# C_FLAG_BOOL=true
# C_FLAG_STRING=one
# C_VALUE=C_

i would have expected C_FLAG_PERSISTENT=true to be included in the environment, but it's not...
Is this a bug, or intended behaviour?

Sounds like bug  :bug: .
Best guess is the flagset isn't merged :thinking:  - an issue I had here as well: https://github.com/carapace-sh/carapace/blob/master/traverse.go#L25
Workaround is to just call LocalFlags first. Think it's time to open an issue in the cobra repo for it.

With the documentation added in carapace-sh/carapace-spec#294 and the flagset merging workaround implemented in carapace-sh/carapace-spec#295, I think this issue can now be closed.
Thanks for your help @rsteube!


Monotonically Increasing CPU usage

Hello
I'm seeing this pattern of increasing CPU usage over time. This is a staging environment and has pretty low traffic. Memory usage was also increasing like this before I set the -m 512 flag. Now memory usage seems to be stable.
We are running mostly HSET and HGET commands within Lua scripts.
First time running twemproxy. Not sure what to expect here.

What version are you running? Does this happen with the latest release?
What config options are you using for the redis pool?
I don't remember seeing any similar bug reports and have used redis before without issues with 0.5.0.
Do the sylogs say anything interesting, e.g. frequent disconnections? (See help message for how to log)

Memory usage was also increasing like this before I set the -m 512 flag. Now memory usage seems to be stable.

Currently, twemproxy maintains a free list manually, and doesn't release memory (e.g. if there are spikes in latencies). This is a problem I've seen before - I was considering an approach to free values in batches periodically in a future releases.

See https://github.com/twitter/twemproxy/issues/553 for memory


c# Godot objects not freed after exit the using scope

Godot version
v3.3.3.stable.mono.official.b973f997f
System information
Windows 10
Issue description
I wrote a little helper method to get the bbcode out.
The RichTextLabel is placed in a using block and should be freed because it inherits from IDisposable.
I can now use Free() manually, but from a functional point of view Dispose should release the object.
Steps to reproduce
        private static string NormalizedFailureMessage(string input)
        {
            using (var rtl = new Godot.RichTextLabel())
            {
                rtl.BbcodeEnabled = true;
                rtl.ParseBbcode(input);
                return rtl.Text;
            } <--- expect to RichTextLabel is freed
        }

Minimal reproduction project
No response

Thank you for the answer.
But it does not feel right, because the node is not attached to a tree, so it should be released.

clarified


API Help

We're currently trying to explore a user case for an app and I'm unsure if its possible based off what I've seen in the API. What we'd like to do is pull photos on an item based level along with the tagged description. So say someone uploaded a photo of the club sandwich at a restaurant we'd like to pull that Yelp photo along with what was tagged with it. User case being someone is at a restaurant and wants to quickly see the items on a food menu but wants to visually see what this food looks like as most menus are text based.
I also looked into the Locu API, but again doesn't look like this is possible.
If anyone has any thoughts on how to help I would greatly appreciate it! Perhaps there are other APIs such as Google Images or FourSquare that could help.

Hi creationburst, currently the API only returns 1 photo per business, so there isn't a way to retrieve specific photos or get more than 1 photo.

Hey thanks for the comment. That was my understanding as well. Any ideas for how this could possibly be done. I'm looking into Locu, Google's APIs, and FourSquare at the moment. I'm hoping there is a way.

@creationburst doesn't seem like a simple problem to solve and this is now out of the scope of our api, going to close this.


added equalTo rule

Proposed changes
Added equalTo rule as discussed here: https://github.com/adonisjs/core/discussions/1475#discussioncomment-52260
Types of changes
What types of changes does your code introduce?

[ ] Bugfix (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)

Checklist

[x] I have read the CONTRIBUTING doc
[x] Lint and unit tests pass locally with my changes
[x] I have added tests that prove my fix is effective or that my feature works.
[ ] I have added necessary documentation (if appropriate)

We should accept $refs too in the equal to rule.
You can read more about $refs here https://preview.adonisjs.com/guides/validator/schema-caching#option-3-using-refs. In fact, I suggest reading the complete caching doc
The blacklist is a great example of using refs.
Feel free to clarify your doubts

Good point, I'll make another PR when I have some time to add the refs.


a fix for #2

npm ignore no longer published to npm
gitignore gets included on module creation

Wonderful, thanks @mattdesl! :)


Players in World selection menu header shows last openned page

The Players in World selection menu on the right of the Quick Menu will show the header text for the last opened page.
Here is an example, I just went to each page, then back to player select, and the header doesn't clear

Yea, this has been a known thing for a bit, I'd meant to fix it up when I did the next chunk of work to it


Run CI on 1.11

Update CI to run on 1.11 too

CI is failing with v1.11 - maybe we should get it running before we merge this

CI is failing with v1.11 - maybe we should get it running before we merge this

Yes, I didn't realize this, but it makes sense. Our lower bounds of some packages are not compatible with julia 1.11 (e.g., CUDA = 5 is not, we need CUDA 5.5). I am not entirely sure how to solve this if not bumping the compats.


.sentinel files linting

WHAT
Support for linting .sentinel files
WHY
Hey there,
For my thesis I'm part of a team implementing PaC and I'm currently researching in what way we can ensure quality when it comes to Sentinel policies.
The first and most straightforward functionality is unit tests, and luckily sentinel has that. However, during my testing, I stumbled upon a few issues that could have been prevented if some kind of static code checker had checked my code before I tried to apply anything.
One of these issues was that some functions did not have return statements after a loop, so if there was nothing to iterate/loop through, it wouldn't find any return statement and just crash. Small issues like these brought me here since I'm trying to figure out a way to validate a .sentinel file before throwing them against any terraform code.
I was wondering if it'd be possible to implement .sentinel file linting to ensure that any written policies are properly structured. I'm also wondering how difficult implementing such a thing would be.
I hope you might have an idea on how to accomplish this goal.

I'm closing this issue, we expect HC to bring out a linter for the sentinel files soon.


feat(health) Add flag to GET /api/status instead of initializing port…

…ainer (fix #1364)
Boolean flag --check-health | --no-check-health | -c is added, which fully overrides the execution of the backend. If the flag is true, the reponse to http.Get("http://localhost:<port>/api/status) is checked and the program exits. This allows for basic health check functionality:
version: '2.1'
services:
  portainer:
    image: portainer/portainer
    command: --host=unix:///var/run/docker.sock
    healthcheck: { test: ["CMD", "./portainer", "-c"] , interval: 30s , timeout: 5s , retries: 3 }
    ports: [ "<IP_ADDRESS>:9000:9000" ]
    volumes: [ "//var/run/docker.sock:/var/run/docker.sock" ]

However, note that the healthcheck line above is not required, because the second commit in this PR adds it to the Dockerfile.

Looking forward to the merge!

would this help ? https://github.com/portainer/portainer/issues/1364#issuecomment-368037778


Added two function methods _.curry and _.attach (+ tests)

_.curry – Curries (burns in) arguments to a function, without forcing new context (inspired by prototypejs).

Difference between  _.curry and _.bind: http://jsfiddle.net/CqG7n/

_.attach – Attaches new properties to the context of the call, in other words it extends passed object(s) with 'this' and makes it context.

To illustrate my use case I modified example from flatiron/director
// api.js
  function helloWorld(route) {
    this.res.writeHead(200, { 'Content-Type': 'text/plain' })
    this.res.end('hello world from (' + route + ')');
  }

// router.js
  var router = new director.http.Router({
    '/hello': {
      get: helloWorld
    }
  });

And I want to provided to my handlers stuff like db-resourse, application home path, etc.,
without expanding list of function parameters, but rather adding to the context.
Using _.attach
// api.js
  function helloWorld(route) {
    fs.readFile(this.apphome+'/etc/passwd', function (err, data) {
      this.res.writeHead(200, { 'Content-Type': 'text/plain' })
      this.res.end(data);
    });
  }

// router.js
  var apphome = '/var/www';
  var router = new director.http.Router({
    '/hello': {
      get: _.attach(helloWorld, {apphome: apphome})
    }
  });

@lvivski Partial is specific to the language implementation, like Haskel, where you can pass partial number of parameters and in return get function for remaining parameters. I think it could be implemented in javascript. But I don't see practical value for that. And on javascript side curry is well-known in the community in this particular implementation because of PrototypeJS. I believe it would be less confusing to have it this way rather than trying to make Haskel out of javascript.


Sync Slider will not sync when dragging the slides from the main slider

I use the sync slider from slick v1.3.15 and have a problem when I use my mouse to drag the slide for navigating through them. the 'nav-slider' contains names, the 'main-slider' the images. When you click through the 'nav-slider' the several names getting highlighted using css and the class .slick-active. But the class .slick-active didn't change on 'nav-slider' when I navigate 'main-slider' so it's not syncronized anymore.
Up to now I just tested by dragging because I don't use arrows oder pignation for navigation.

please provide a jsfiddle.

http://jsfiddle.net/g4o9edne/20/
If you use the navigation (.name) everything works fine. If you click on one of them, the border-color turns red and the image slider slides to the correct image.
If you use the image slider by dragging the slides, the .slick-active doesn't sync , so the red marked name (from .name) stays where it is. (Sorry for bad english)

And by the way: Why is .slick-active set on every slide of .name (everything is red) when reloading the page?
And is there a reason why a sync slider has to own at least one similar element (my jsfiddle wouldn't work if there would be no <h3> inse .image)?

ahh ok. looking into this

You might want to try Flickity. It supports asNavFor like Slick. You can click and swipe on either slider and it'll sync up fine. See demo http://codepen.io/desandro/pen/wByaqj

Just checking in to see if there is an update to this issue. Having a similar problem where dragging between slides doesn't add the class of slick-active to the companion carousel.

Thanks for the code (from your coworker) @natis , it works for me however each of the thumbnails/previews are set to active on page load for some reason and so this doesn't fully work for me.
Getting around it by setting draggable to false for now.

I've modified the slick.js code to fix this issue for me.
In the "Slick.prototype.slideHandler" function (around line 2119) remove the if statement:
if (_.slideCount <= _.options.slidesToShow) {
return;
}
Then farther down (around line 2200), below the ".updateDots();" and ".updateArrows();" add in:
if (_.slideCount <= _.options.slidesToShow) {
_.animating = false;
return;
}
This worked for me.

Hi,
Can you please look into this?
Thanks.

Updated the fiddle to the master. Looks like this has been fixed. Is there some other issue I'm missing?

Updating from 1.5.9 to 1.6.0 fixed it for me.

I can say after intensive testing, that this error still exists in Version 1.6 and 1.8.1


Create yic.txt

Please add my school, thank you very much.

Please add my school, thank you very much.

@xuerongli I am sorry, an official domain of this Institute is yic.cas.cn. What is an email address pattern for the students who study in this Institute? Is it<EMAIL_ADDRESS>Thank you.

@xuerongli You might miss my previous comment. Please react.

@xuerongli I am sorry, this request remains unanswered for a while. I have to close it without merging. Please reopen and comment if you have an update regarding the aforementioned issue. Thank you for the understanding!


[rancher-mesos-executor]

executor.go is importing "github.com/rancherio/rancher-mesos-executor/orchestrator", which can't be resolved. I guess it should be rancher instead of rancherio?

Github is redirecting any rancherio to rancher. But if I try to find the page under rancher ,it's a 404.
@wlan0 Can you take a look?

All the code should be updated to use rancher instead of rancherio.  This particular repo was created after we switched the org name so there is no redirect, and the redirect shouldn't be relied on anyway.
It's a golang import, so the /orchestrator part is not a literal URL but the directory once the code is pulled down. https://github.com/rancher/rancher-mesos-executor/tree/master/orchestrator

Fixed in https://github.com/rancher/rancher-mesos-executor/pull/1


Start Process With Process Instance Name via rest and Java APIs #1952

fix name not being saved to query service

#1952

Great, I'm merging it. @lucianoprea could you update one of the acceptance tests to add the process instance name as well?


Align insights/private-link-scope to AVM specs

Work started
https://github.com/ahmadabdalla/bicep-registry-modules/tree/users/ahmad/4413_privateLinkScopes

@AlexanderSehr @matebarabas Is this telemtry name correct for the AVM module?
46d3xbcp.res.insights-privatelinkscopeopstatus
It contains opstatus at the end, and doesn't align with other modules

Hey @ahmadabdalla, I agree that looks a bit off. These are all insights modules we're tracking in the index table

while the resource types of the module are

@matebarabas, this must be fixed in the CSV. Further, I guess the current, incorrect resource type is also incorrectly listed in the platform and we need an update of the corresponding GitHub repository before publishing the module.

@ahmadabdalla, I've just fixed the incorrect entry. Thank you for raising this to our attention! 👍

Work completed


NotEmptyMap to inline class

Description
Like discussed in the issue #97, we would like to convert the NotEmptyMap type to an inline class.

This is breaking change: the copy function will be unavailable after this migration.

Checklist

[x] Add unit tests for the equals function.
[x] Migrate the type to an inline class without breaking its API (except for the copy function).
[x] Improve the type's documentation by adding code samples to each declarations.
[x] Check the generated documentation.
[x] Check and update the public API binaries.
[x] Update the Unreleased section in changelog.

See the PR #145 for more information about how to convert this type to an inline class.

The NotEmptyMap is a view of Map instead of a new type of collections in itself.
Here's an example showing that changes made on the original are reflected to the NotEmptyMap view:
val original: MutableMap<Char, Int> = mutableMapOf('a' to 1, 'b' to 2)
val notEmptyMap: NotEmptyMap<Char, Int> = original.toNotEmptyMap()
    .getOrThrow()
println(original) // {a=1, b=2}
println("$original" == "$notEmptyMap") // true

original += 'c' to 3
println(original) // {a=1, b=2, c=3}
println("$original" == "$notEmptyMap") // true

// The following is dangerous and shouldn't be true!
original.clear()
println(original) // {}
println(notEmptyMap) // {}

A solution could be to copy the underlying map before storing them in the NotEmptyMap.

Here's a discussion on the topic of types vs views.


⚠ Redacted has degraded performance

In 588fead, Redacted ($RED) experienced degraded performance:

HTTP code: 200
Response time: 3962 ms

Resolved: Redacted performance has improved in 53c6c33.


Tooling for verifying wasm was compiled from the public source

Hello
Maybe this is just a paranoia on my side. However, currently if I want to do an audit of my dependencies, I can download and extract the crate source downloaded from crates.io and read it. There are even tools promoting such approach, like cargo-crev.
But if the crate contains the binary wasm code, reading it and understanding what it does gets much harder. I understand that the compiled code can't do arbitrary stuff to the system itself, but it could still produce malicious code into its output, or simply be buggy and produce wrong code.
So I wonder, would it be possible to somehow make it possible (by some tooling) to automatically bundle both the original source code and the wasm and have a way to opt into the longer compile time, but making sure it is indeed from the given sources?

Absolutely -- this is along the lines of what I called out in the readme:

including easy tooling for doing reproducible builds of the Wasm artifact for confirming that it was indeed compiled from the publicly available sources.

This feature would be useful: https://github.com/rust-lang/rust/issues/41555

I made this tool: cargo watt.
Currently it can verify that a given .wasm file was compiled from a specified source, but it only works if both the compilation and verification are done on the same OS.
Compiling on linux vs on macOS leads to this difference (diff of strings file.wasm): https://gist.github.com/jakobhellermann/da18d6f2da58414e0fd9c06ae708d2c1.
If anyone knows why this is or how to debug it please let me know :)


Not optimal balance check.

Current implementation for getting balance per user is unnecessarily complex.
https://github.com/energywebfoundation/origin/blob/37274aaeb9d881e8759c2121d3c9b80cbda586dd/packages/issuer/src/blockchain-facade/Certificate.ts#L373
Instead of this the better option would be:

scan for transfers and batch transfers with your address
take id from those events
use 1155.balanceOfBatch to resolve balances

Same possibly can be applied to getting claimed balance.

This function tries to get all the owners for a specific certificate, and then based on that calculate the total energy value of the certificate.
@kosecki123 What you describe would give us all the certificates and balances for a specific owner. Did I understand something wrong?

Is this functionality still available? @JosephBagaric


VSTest doesn't support MSIX

Description
UWP now generates MSIX packages instead of APPX. APPX was supported by VSTest, but the new MSIX is not.
I also created this StackOverflow question for the issue.
Steps to reproduce
Build a UWP unit test project with a min version of 1809+
Generate the package for the unit test project
Run vstest.console.exe with the path to the generated MSIX path
vstest.console.exe "C:\AppPackages\UnitTestProject\UnitTestProject_<IP_ADDRESS>_Debug_Test\UnitTestProject_<IP_ADDRESS>_x86_Debug.msix" /TestAdapterPath:"C:\AppPackages\UnitTestProject\UnitTestProject_<IP_ADDRESS>_Debug_Test\"

Expected behavior
It should run the unit tests in the project
Actual behavior
No tests are discovered
Diagnostic logs (diag)
No test discoverer is registered to perform discovery for the type of test source 'C:\AppPackages\UnitTestProject\UnitTestProject_<IP_ADDRESS>_Debug_Test\UnitTestProject_<IP_ADDRESS>_x86_Debug.msix'. Register a test discoverer for this source type and try again.

Environment
Visual Studio 2019 Enterprise
Windows 10 Pro 10.0.18363.900
vstest.console build version 16.6.0

FYI, I just found that I can rename the MSIX to APPX and run the tests against that. So really the discoverer needs to just have the msix extension added.

This is supported, I just tried using this syntax and it worked:
vstest.console.exe /framework:FrameworkUap10 UnitTestProject4_<IP_ADDRESS>_x86_Debug.msix
I noticed you're supplying the TestAdapterPath argument, perhaps the problem is with the custom adapter.

I tried with and without, but it didn't work....

That worked! Thanks!

There should be documentation for this somewhere before this issue is closed.

Looks like there is bit more work to be done, because the Framework parameter forces a framework to be used, and then I guess the UWP discoverer is selected based on that framework (the dotnet and .NET Framework work like that).
So it would be useful to see which framework it detects when used with msix and with appx.
Could you try enabling the diag logs and searching them for:
vstest.console, Determined framework for all sources:

You enable the logs like this:
vstest.console xunit1.dll /Diag:c:\temp\discovery\log.txt

Thinking about it a bit more, maybe we can't do that, because from what I understood, MSIX is more general than just packing UWP, so we would not know what test payload is there.

@nohwnd I think this should be reconsidered (and I opened #2943 with a suggested change).
There is no difference whatsoever between .appx and .msix files--it's just a different file extension (and brand). A .msix file could contain non-UWP test payload...but so could an .appx file. I think vstest should treat them the same way.


Added decode html util

Description
What I want

What I have

Proposed Changes

Added a decodeHtml util that safely decodes html entities.

Potential Breaking Changes
None
Acceptance Criteria

[x] The proposed changes are covered by unit tests
[x] The potential breaking changes are clearly identified
[x] README.md is adjusted to reflect the proposed changes (if relevant)

Codecov Report

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

@@           Coverage Diff           @@
##           master    #1142   +/-   ##
=======================================
  Coverage   99.74%   99.74%
=======================================
  Files         350      350
  Lines        8521     8521
  Branches     2023     2023
=======================================
  Hits         8499     8499
  Misses         22       22

Continue to review full report at Codecov.

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


Error while self-approving pull request

2021-06-08 09:23:57,235 Exception running task <UploadReviewTask 14736>
Traceback (most recent call last):
  File "/home/martin/.virtualenvs/hubtty/lib/python3.9/site-packages/hubtty/sync.py", line 1395, in _run
    task.run(self)
  File "/home/martin/.virtualenvs/hubtty/lib/python3.9/site-packages/hubtty/sync.py", line 1250, in run
    sync.post('repos/%s/reviews' % (change_id,),
  File "/home/martin/.virtualenvs/hubtty/lib/python3.9/site-packages/hubtty/sync.py", line 1485, in post
    self.checkResponse(r)
  File "/home/martin/.virtualenvs/hubtty/lib/python3.9/site-packages/hubtty/sync.py", line 1430, in checkResponse
    raise Exception("Received %s status code: %s"
Exception: Received 422 status code: {"message":"Unprocessable Entity","errors":["Can not approve your own pull request"],"documentation_url":"https://docs.github.com/rest/reference/pulls#create-a-review-for-a-pull-request"}

You are not allowed to approve your own pull requests on github, this is a feature in github.
To me, it is a bug, but you cannot really do anything about it.


npm run dev:ssr is broken

Looks like I broken something when I updated the interface.

It's probably looking for the proxy's headers.


⚠ Fortnite has degraded performance

In 113fab2, Fortnite (https://fortnite.com) experienced degraded performance:

HTTP code: 200
Response time: 1703 ms

Resolved: Fortnite performance has improved in 6da69d0.


Fix /.xml RSSLink when uglyurls are enabled

Prior to this commit the root url with uglyurls enabled is "/.xml".
This commit relates to #175.

 You should sign our Contributor License Agreement in order to get your pull request merged.John McFarlane seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account ([for further information, click here] (https://help.github.com/articles/why-are-my-commits-linked-to-the-wrong-user/#commits-are-not-linked-to-any-user)).

I'm not entirely sure what to think of the failing AppVeyor tests. Locally I ran go test ./... which passed. I can't imagine the diff here would result in the failures seen in the test results.

Don't worry, the AppVeyor test failure affects the current master too, and the problem is already known: see #1680 if you are interested.  :-)

Your patch looks good to me, but I will leave it to @ bep or @ spf13 for the code review as they are definitely more knowledgeable and qualified.  :-)

Great, I know very little about the codebase so would benefit from any
feedback :)
On Sun, Dec 6, 2015, 23:19 Anthony Fok<EMAIL_ADDRESS>wrote:

Your patch looks good to me, but I will leave it to @ bep or @ spf13 for
the code review as they are definitely more knowledgeable and qualified. :-)
—
Reply to this email directly or view it on GitHub
https://github.com/spf13/hugo/pull/1682#issuecomment-162435641.

Merged as b1f2b43. Thanks for the fix @jmcfarlane !


Change Avatar

Can you add a way to change the user's avatar?

Looks like it should be doable.
Docs


Icons no longer displayed since 5.3.0

Hello, I am a new user of the plugin and I have confirmed this issue on a blank TiddlyWiki where the context menu fails to show icons.

Looking at the documentation for the latest breaking version, the changelog for 5.3.0 suggests a cause:

Core Icons to allow the size to be controlled with a parameter
⚠ This change can cause problems with non-standard usage of the core icons where the text is directly rendered instead of being transcluded

I would be grateful if you would consider an update to match the approach in the latest version.

Back on Tiddlywiki again, apologies for the late response. Fixed in 0.9.0.


Regarding the availablity in WebRtc

Hi
If we are using webtorrent-hybrid(through CLi or nodejs) and when start downloading a torrent from the regular bittorrent network, will this file will also be available on the WebRtc network at the same time ?

Yes.


Increase log level of cluster status ok logs

Fixes #835

Though I don't know why it is 7 but it is lower enough to me for runtime logging for this :-)
/lgtm


API Documentation

This is the epic issue to collect all changes required to have API documentation work inside of lbry.tech.
After some discussion, there is now some uncertainty as to whether OpenAPI/Swagger is the right solution.
Required properties:

Web-based display of all endpoints/methods, including parameters, description, and example response signature. Methods should be directly linkable.
Modern, clean, friendly, usable UI (Stripe is some of the best API documentation I've ever seen / used)
Method documentation in-code. The documentation tooling should be able to take this documentation and generate the interactive page(s).
Build-integrable tooling (not sure how this one wouldn't be possible though :)

Ideal properties:

Identical or similar API documentation standard across repositories.
Method documentation located in-line with method entries, rather than a separate YML/markup file.
Handles both CLI and JSON-RPC ways of method calling
Auto code-gen, live testing, and any other benefits from Swagger.

Other considerations:

API versioning?

Consider https://github.com/lord/slate, it produces similar looking docs to stripe. Slate appears to be a pretty popular solution: https://github.com/lord/slate/wiki/Slate-in-the-Wild

{
        'name': 'Actual Method or Command Name,
        'description': 'Long description of what the method does.',
        'arguments': [
              {
                'name': 'name of the argument, e.g. key in the JSON request to daemon',
                'type': 'type of value, e.g. str, int',
                'description': 'Long explanation of the argument.',
                'is_required': 'True/False if the argument is required.'
            }
        ],
        'examples': {
            'python': { ... TBD ... },
            'curl': { ... TBD ... }
        },
        'returns': 'Annotated data structure returned.'
}

I know I'm an outsider but I've begun taking a crack at a JS api binding so this convo is relevant for me.
Might want to take a look at jrgen; there's a decent amount of prior work there (.md, .html, gitbook support, plus code-gen), the schema is not dissimilar from what you've got above, and it doesn't barf on adding extra properties (examples). I just did a quick sanity check porting the example given by @lyoshenka and ran into no trouble. Here's what it looks like:
{
  "$schema":
    "https://rawgit.com/mzernetsch/jrgen/master/jrgen-spec.schema.json",
  "jrgen": "1.1",
  "jsonrpc": "2.0",

  "info": {
    "title": "ExampleAPI",
    "description": [
      "An example api which handles various rpc requests.",
      "This api follows the json-rpc 2.0 specification. More information available at http://www.jsonrpc.org/specification."
    ],
    "version": "1.0"
  },

  "definitions": {
    // this section can be used to define reusable schemas internally; claims, transactions...
  },

  "methods": {
    "publish": {
      "summary": "Make a new name claim and publish associated data to lbrynet, update over existing claim if user already has a claim for name.",
      "description":
          "Fields required in the final Metadata are:\n            'title'\n            'description'\n            'author'\n            'language'\n            'license'\n            'nsfw'\n\n        Metadata can be set by either using the metadata argument or by setting individual arguments\n        fee, title, description, author, language, license, license_url, thumbnail, preview, nsfw,\n        or sources. Individual arguments will overwrite the fields specified in metadata argument.",

      "tags": ["content", "fee"],

      "params": {
        "type": "object",
        "properties": {
          "name": {
            "description": "name for the content",
            "default": "admin",
            "type": "string",
            "minLength": 1,
            "example": "lbry-rocks"
          },
          "bid": {
            "description": "Password of the user to create a session for.",
            "default": "123456",
            "type": "number",
            "minimum": 0.0001
          },
          "file_path" : {
            "type": "string",
            "description": "path to file to be published",
            "example": "/home/lbry/lbryrocks.mp4"
          },
          "title": {
            "type": "string",
            "description": "title of the publication",
            "example": "\\m/ LBRY rocks \\m/"
          },
          "description": {
            "type": "string",
            "description": "description of the publication",
            "example": "So lit right now"
          },
          "nsfw":{
            "type": "boolean",
            "description": "is the content safe for work",
            "example": true
          },
          "metadata": {
            "type" : "object",
            "description": "other metadata associated with the claim",
            "properties": {
              "license" : {
                "type": "string",
                "description": "license for the content",
                "example": "CC0"

              },
              "thumbnail" : {
                "type": "string",
                "description": "preview thumbnail",
                "example": "https://spee.ch/lbryrocks.jpg"
              }
            }
          }
        },

        "required": ["name", "bid", "file_path"]
      },

      "examples": [
        {
          "language": "python",
          "description": "not sure we need this, but might be nice as help text at the top or bottom?",
          "example": "code goes here"
        },
        {
          "language": "curl",
          "description": "not sure we need this, but might be nice as help text at the top or bottom?",
          "example": "actual example goes here"
        }
      ],

      "result": {
        "type" : "object",
        "properties": {
          "tx" : {
            "type" : "string",
            "description": "hex encoded transaction",
            "example": "0100000008fa4e01e57294cd72e...d4e1c557033b26256b0c1a96286488ac00000000"
          },
          "txid": {
            "type": "string",
            "description": "transaction id of resulting claim",
            "example": "e3ca2057767a7fbae36ea51af977ae86c67833c0634cbd0975ac536cd77f43c7"
          },
          "nout": {
            "type": "number",
            "description": "nout of the resulting claim",
            "example": 1
          },
          "fee" : {
            "type": "number",
            "description": "fee paid for the claim transaction",
            "example": 0.001
          },
          "claim_id": {
            "type": "string",
            "description": "claim ID of the resulting claim",
            "example": "304402202d0aaf5ad2f67a331ae453e2cc3ff"
          }
        }
      },

      "errors": [
        {
          "description": "missing required arguments",
          "code": 1,
          "message": "InvalidArgumants"
        }
      ]
    }
  }
}

I'm probably going to use it for code-gen on my side to get started with a Javascript binding; which means I'll end up writing a schema file as part of work on that client. Happy to be advised as to the most useful thing to do with it :)

@rynomad thanks for the suggestion! @lyoshenka / @eukreign any thoughts on the above?

I don't have additional thoughts. @NetOperatorWibby is most affected by this (he has to convert the JSON into a new HTML document and/or use jrgen as suggested by @rynomad) so it's up to him.

You’re creating the parser @eukreign, all I’m doing is parsing a JSON file. So, it’s up to you.

Okay, this is easy: are you planning to use jrgen?
If no, then I'll stick to a combination of my original JSON and what @lyoshenka suggested.
If yes, then I'll make it compatible with jrgen.

@eukreign Nope, all I should be doing is parsing a file. The generator should take care of everything else.

I really like the jrgen suggestion. I would like to go that way for lbrycrd API docs ( https://github.com/lbryio/lbrycrd/issues/131 ).

@eukreign @BrannonKing whichever format you choose, please document the final structure of the generated file


Use the same name for the suppressInit option and the suppressLX parameter

The suppressInit option to ]CIDER.OpenProject and the suppressLX parameter for  Cider.OpenProject do the same thing.
Give them the same name.
Since the effect is to suppress execution of the function specified in the init parameter of the project config, cal them both suppressInit.

This was initially called suppressLX. Some people complained, and made a good point, so I renamed it to suppressInit. The software does not know anything about suppressLX anymore, it's just the documentation that needs to be corrected.

The issue can be closed when PR #102 merged.


reorder release highlights

🚀 Pull Request
Description
This PR orders the Release Highlights, with some minimal rewording.
The rendered changes of this PR is available in readthedocs.

Consult Iris pull request check list

Perfect.  Thank you.


[🔧] Added TypeDoc

:tada: This PR is included in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


55 ability to consume a batch of messages without compression

See the issue. We can now read from the batch subentries

The pipeline is red because of the usual rabbitMQ plugins in pipeline issue. The tests are green if you run them locally


Support for melting structs

Sorry for the massive PR, I had to fix a lot of things to get the tests working. There was a bunch of lurking issues with melting that supporting structs exposed.

I didn't see where Outputs are split up?
this is good. I am particularly happy that melt and constructor are able to stay separate.
:fries:


Default costs for imported electricity are too low, IMO

In all cases and all countries, the future electricity production is completely dominated by imports, as opposed to the present one. This suggests that 35 €/MWh is too low. I suggest moving it to at least 55 or 60 €/MWh (based on no research whatsoever).
I also suggest we limit the default availability of import and export interconnection to 50 or 75%
notifying @DorinevanderVlies @michieldenhaan @marliekeverweij and @jorisberkhout

This can probably wait until after deploy.

I suggest moving it to at least 55 or 60 €/MWh (based on no research whatsoever).

I also suggest we limit the default availability of import and export interconnection to 50 or 75%

Fine by me. @MartLubben can you make this happen today?

This can probably wait until after deploy.

Sounds good. Removing deploy milestone.


Unhandled rejection ReplyError: CROSSSLOT Keys in request don't hash to the same slot

Hello there,
I am using ioredis to enable redis cluster usage to set and purge keys. On purging keys, I get the above error. The purge happens anyway. When I use the redis instance in expressjs middleware I get this error otherwise I dont.
I am using 4.10.x as the express version.
var express = require('express');
var expressSession = require("express-session");
var sessionStorage = require('connect-redis')(expressSession);
var redis = require('ioredis');
var config = require('./config');var app = express();

var client = new redis.Cluster([{
	host: config.session.host,
	port: config.session.port,
	password: config.session.pass,
	ttl: config.session.ttl
}]);

app.use(expressSession({
  unset: "destroy",
  saveUninitialized: false,
  resave: false,
  secret: config.session.secret,
  store: new sessionStorage({
		client: client,
		ttl: config.session.ttl,
    prefix: '{sess}.'
  }),
  key: "authorization.sid",
  cookie: {maxAge: config.session.maxAge}
}))

app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());

app.post('/login', function(req, res) {
	if(req.user) {
		return res.redirect('/home');
	}

	if (req.body.username === 'Anu' && req.body.password === 'Password') {
		req.logIn({name: 'Anu'}, function(err) {
			return res.redirect('/home');
		})
	} else {
		return res.send(400);
	}
})

app.get('/logout', function(req, res) {
	req.logout();
})

var port = process.env.PORT || '3000';
app.listen(port);

Note: I get this error only when I use it in the express middleware and not when using the io-redis package seperately.
Actually everything works fine except for express logging this unhandled error.

Having raised this issue with them too https://github.com/expressjs/express/issues/3646

This error is not ioredis related. It happens when calling a multiple-keys command (such as mget).

Unhandled rejection ReplyError: CROSSSLOT Keys in request don't hash to the same slot
  at JavascriptRedisParser.replyParser.Parser.returnError (/usr/src/app/node_modules/ioredis/lib/redis/parser.js:24:25)
at JavascriptRedisParser.execute (/usr/src/app/node_modules/redis-parser/lib/parser.js:572:12)
at Socket.<anonymous> (/usr/src/app/node_modules/ioredis/lib/redis/event_handler.js:107:22)
at emitOne (events.js:90:13)
at Socket.emit (events.js:182:7)
at readableAddChunk (_stream_readable.js:147:16)
at Socket.Readable.push (_stream_readable.js:111:10)
at TCP.onread (net.js:523:20)

I get this above stack trace every 10 seconds, even when my app is idle. Not sure, If it is something to do with my configuration. How do I proceed further? Please help.

Just looked into the code of connect-redis. It seems connect-redis doesn't support Redis cluster, so you need use new redis instead of new redis.Cluster.

...wait, so you can't use  connect-redis with redis cluster/?


typo: selelectWithoutLabel

Describe the bug
The text tag has a parameter selelectWithoutLabel. It should be selectWithoutLabel. I am hesitant to offer a pull request because a change could break users' existing solutions. A deprecation strategy is suggested, and I'm not sure how to do that with your code.
To Reproduce
Steps to reproduce the behavior:

Visit https://labelstud.io/tags/text.html
See spelling

Expected behavior
The label should be selectWithoutLabel.

@kgeis Hi! I'm not sure about default state is withoutLabel.
The main reasons:

The logic for all tags should be the same for future HOC.
The main task of markup data is to separate different labels & entities.

But I think it's a good idea to create more concise names of parameters for tags. For example change selectWithoutLabel to emptyLabel (or similar).

@shevchenkonik, I don't understand your comment. I'm just saying that the parameter name has an extra "le" in it. Maybe this makes it more clear: se<le>lectWithoutLabel

@kgeis haha I did not notice typos :)
Yes, you are right about deprecation strategy and in the the current version we can leave a selelectWithoutLabel and add new one as selectWithoutLabel (and add TODO comment):
/** TODO */
if (!self.selelectwithoutlabel || !self.selectwithoutlabel) /** ... */;

In the next major release, we will update the logic of this tag and will add major release note.

@kgeis Thanks for reporting. That was fixed in the latest release


Use npm instead of yarn.

I don't really see a requirement for yarn here.  Is there a reason were using it over npm?
yarn is an additional pre-requisite that developers need to install.,creating impedance to participation
yarn isn't needed for react.
npm has locks like yarn since npm 5
npm has similar performance since npm 5
npm provides package security auditing since npm 6

In my observations I've noticed that that most js developers seem to use yarn already, so it might be more familiar to them. We can also just ignore yarn.lock but people can still keep using yarn if they want.

npm is downloaded by 25% more time than yarn, and that is not counting people who get their npm updates with their node downloads which hovers around 1M per week.   I think 'most' is a stretch by objective measures.
Another fact all developers using node have npm installed, only those developers who have opted into yarn have it installed.
If we're going to contribute anecdotes, I'd say that most developers only install yarn because it's used in react by default and FB goes out of their way to market it.  It is not used very widely in the svelte, vue, or angular, or nodejs communities.


No way to add custom styles

There is no way to add a custom style, without forking the code and dropping it into the pygments styles directory. This seems…irritating.
I'm not sure the best way to go about this, but some way to point to a python script in the filesystem that contains a style would be welcome

It would be nice if pygments.rb could check for a theme written to a Ruby interface first, then go to pygments if it doesn't find one.
This could allow styles from Rouge to be reused. All we need is a small adapter to convert the result into the same format that pygments.rb expects. pygments.rb doesn't even need to provide that adapter...also long as it allows the theme to be registered somehow.

Shoot, I just realized that the selection of the theme is happening down at the pygments layer. What I'm suggesting would only work for the css function, but then you could generate the CSS any way you want already.
It appears that it's possible to pass a style object to the style option. pygments.rb would need to detect the style option in a certain format (perhaps some sort of json) and convert it to the style interface so pygments can use it.


Fix repeatable field persistence

Coverage remained the same at 100.0% when pulling 36a20cb839185d59cad53f3ca01426517d4c9310 on DASPRiD:bugfix/repeatable-field-persistence into f5c662d43e5db9cb097bdf291d3bdbdc3a2ffd33 on soliantconsulting:master.

Rebased to fix typo in "repeating field" in commit message and remote merged