Do Not Merge - Testing tryjobs

Validating a few gold things after yesterdays P0

Gold has detected about 1 untriaged digest(s) on patchset 1.
View them at https://flutter-gold.skia.org/cl/github/65032

Gold has detected about 1 untriaged digest(s) on patchset 2.
View them at https://flutter-gold.skia.org/cl/github/65032

Gold has detected about 1 untriaged digest(s) on patchset 3.
View them at https://flutter-gold.skia.org/cl/github/65032

Gold has detected about 1 untriaged digest(s) on patchset 4.
View them at https://flutter-gold.skia.org/cl/github/65032

Gold has detected about 1 untriaged digest(s) on patchset 5.
View them at https://flutter-gold.skia.org/cl/github/65032

Gold has detected about 1 untriaged digest(s) on patchset 9.
View them at https://flutter-gold.skia.org/cl/github/65032

Gold has detected about 1 untriaged digest(s) on patchset 9.
View them at https://flutter-gold.skia.org/cl/github/65032

Closing for now while investigating tryjob ingestion


Generated PDF not rendering SVG gradients on OSX

Which version of PhantomJS are you using? Tip: run phantomjs --version.
2.1.1
What steps will reproduce the problem?

phantomjs rasterize.js http://www.w3schools.com/svg/svg_grad_linear.asp /var/tmp/w3c-gradients.pdf A4
w3c-gradients-fails.pdf
Open generated PDF on mac using default PDF viewer (Preview) or in Safari
Renders fine if viewed using Chrome or Adobe Reader on MAC

Which operating system are you using?
OSX 10.11.6
Preview Version 8.1
Did you use binary PhantomJS or did you compile it from source?
Used binary installed using npm
Please provide any additional information below.
Another link for which it fails: http://jsfiddle.net/GEBjE/485
highcharts-gradient-fails.pdf

Works for http://jsfiddle.net/GEBjE/486
highcharts-solid-works.pdf
If you Print to PDF using Chrome's Print menu, then that PDF renders fine in Preview.
highcharts-gradient-from_chrome-works.pdf

I have the same issue with the Windows binary 2.1.1. Generated PDF does not show SVG Gradient  on Sarfari. The same PDF does show up SVG on Chrome. Also SVG without gradient do show properly.
Finally, it seems that the Linux binary 2.1.1 does work. And it does work with version 1.9.7 of the Windows binary.


If a user clicks to remove a bookmark that is living on a dashboard, show modal asking for verification.

This modal should pop up when a user clicks to remove a CURRENTLY USED bookmark from the Center -- both from the tile and from the quickview app modal.

why did you move this back to backlog?

@akonsowski

Testing Steps would be:
Log into Apps Mall
Bookmark JotSpot 9 and HatchLatch 9 in Center
Go to WebTop
Choose Add button at bottom left corner ( This begins the process to add a new dashboard and assign a number to it)
The Open Bookmarked Apps modal displays
Choose both JotSpot 9 and Hatch Latch9 apps and Select "Open in New Dashboard"
The new dashboard will be created with a number associated to it.
Go back to Center/HUD and unbookmark JotSpot9
EXPECTED RESULTS - Here is where it should give you a verification message informing user this will be removed from their dashboard. It also produces a broken link when they open their webtop dashboard.

@akonsowski  was putting this in the backlog because he knew it was related to WebTop. We got confirmation today to not work on this feature.

thank you


Moving min and max to new API and removing from protobuf

Which issue does this PR close?

Closes #10943 .

[ ] Sliding window accumulator for min and max

Rationale for this change

What changes are included in this PR?

Are these changes tested?

Are there any user-facing changes?

I do have something that's starting to look reasonable, but some tests on the optimizer now are failing for some reasons I can't understand
running 1 test
test custom_sources_cases::optimizers_catch_all_statistics ... FAILED

successes:

successes:

failures:

---- custom_sources_cases::optimizers_catch_all_statistics stdout ----
thread 'custom_sources_cases::optimizers_catch_all_statistics' panicked at datafusion/core/tests/custom_sources_cases/mod.rs:274:5:
Expected aggregate_statistics optimizations missing: AggregateExec { mode: Single, group_by: PhysicalGroupBy { expr: [], null_expr: [], groups: [[]] }, aggr_expr: [AggregateFunctionExpr { fun: AggregateUDF { inner: Count { name: "COUNT", signature: Signature { type_signature: VariadicAny, volatility: Immutable } } }, args: [Literal { value: Int64(1) }], logical_args: [Literal(Int64(1))], data_type: Int64, name: "COUNT(*)", schema: Schema { fields: [Field { name: "c1", data_type: Int32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }], metadata: {} }, sort_exprs: [], ordering_req: [], ignore_nulls: false, ordering_fields: [], is_distinct: false, input_type: Int64 }, AggregateFunctionExpr { fun: AggregateUDF { inner: Min { signature: Signature { type_signature: Numeric(1), volatility: Immutable }, aliases: ["min"] } }, args: [Column { name: "c1", index: 0 }], logical_args: [Column(Column { relation: Some(Bare { table: "test" }), name: "c1" })], data_type: Int32, name: "MIN(test.c1)", schema: Schema { fields: [Field { name: "c1", data_type: Int32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }], metadata: {} }, sort_exprs: [], ordering_req: [], ignore_nulls: false, ordering_fields: [], is_distinct: false, input_type: Int32 }, AggregateFunctionExpr { fun: AggregateUDF { inner: Max { signature: Signature { type_signature: Numeric(1), volatility: Immutable }, aliases: ["max"] } }, args: [Column { name: "c1", index: 0 }], logical_args: [Column(Column { relation: Some(Bare { table: "test" }), name: "c1" })], data_type: Int32, name: "MAX(test.c1)", schema: Schema { fields: [Field { name: "c1", data_type: Int32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }], metadata: {} }, sort_exprs: [], ordering_req: [], ignore_nulls: false, ordering_fields: [], is_distinct: false, input_type: Int32 }], filter_expr: [None, None, None], limit: None, input: CustomExecutionPlan { projection: Some([0]), cache: PlanProperties { eq_properties: EquivalenceProperties { eq_group: EquivalenceGroup { classes: [] }, oeq_class: OrderingEquivalenceClass { orderings: [] }, constants: [], schema: Schema { fields: [Field { name: "c1", data_type: Int32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }], metadata: {} } }, partitioning: UnknownPartitioning(1), execution_mode: Bounded, output_ordering: None } }, schema: Schema { fields: [Field { name: "COUNT(*)", data_type: Int64, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "MIN(test.c1)", data_type: Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "MAX(test.c1)", data_type: Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }], metadata: {} }, input_schema: Schema { fields: [Field { name: "c1", data_type: Int32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }], metadata: {} }, metrics: ExecutionPlanMetricsSet { inner: Mutex { data: MetricsSet { metrics: [] } } }, required_input_ordering: None, input_order_mode: Linear, cache: PlanProperties { eq_properties: EquivalenceProperties { eq_group: EquivalenceGroup { classes: [] }, oeq_class: OrderingEquivalenceClass { orderings: [] }, constants: [], schema: Schema { fields: [Field { name: "COUNT(*)", data_type: Int64, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "MIN(test.c1)", data_type: Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "MAX(test.c1)", data_type: Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }], metadata: {} } }, partitioning: UnknownPartitioning(1), execution_mode: Bounded, output_ordering: None } }

I do have something that's starting to look reasonable, but some tests on the optimizer now are failing for some reasons I can't understand
running 1 test
test custom_sources_cases::optimizers_catch_all_statistics ... FAILED

successes:

successes:

failures:

---- custom_sources_cases::optimizers_catch_all_statistics stdout ----
thread 'custom_sources_cases::optimizers_catch_all_statistics' panicked at datafusion/core/tests/custom_sources_cases/mod.rs:274:5:
Expected aggregate_statistics optimizations missing: AggregateExec { mode: Single, group_by: PhysicalGroupBy { expr: [], null_expr: [], groups: [[]] }, aggr_expr: [AggregateFunctionExpr { fun: AggregateUDF { inner: Count { name: "COUNT", signature: Signature { type_signature: VariadicAny, volatility: Immutable } } }, args: [Literal { value: Int64(1) }], logical_args: [Literal(Int64(1))], data_type: Int64, name: "COUNT(*)", schema: Schema { fields: [Field { name: "c1", data_type: Int32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }], metadata: {} }, sort_exprs: [], ordering_req: [], ignore_nulls: false, ordering_fields: [], is_distinct: false, input_type: Int64 }, AggregateFunctionExpr { fun: AggregateUDF { inner: Min { signature: Signature { type_signature: Numeric(1), volatility: Immutable }, aliases: ["min"] } }, args: [Column { name: "c1", index: 0 }], logical_args: [Column(Column { relation: Some(Bare { table: "test" }), name: "c1" })], data_type: Int32, name: "MIN(test.c1)", schema: Schema { fields: [Field { name: "c1", data_type: Int32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }], metadata: {} }, sort_exprs: [], ordering_req: [], ignore_nulls: false, ordering_fields: [], is_distinct: false, input_type: Int32 }, AggregateFunctionExpr { fun: AggregateUDF { inner: Max { signature: Signature { type_signature: Numeric(1), volatility: Immutable }, aliases: ["max"] } }, args: [Column { name: "c1", index: 0 }], logical_args: [Column(Column { relation: Some(Bare { table: "test" }), name: "c1" })], data_type: Int32, name: "MAX(test.c1)", schema: Schema { fields: [Field { name: "c1", data_type: Int32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }], metadata: {} }, sort_exprs: [], ordering_req: [], ignore_nulls: false, ordering_fields: [], is_distinct: false, input_type: Int32 }], filter_expr: [None, None, None], limit: None, input: CustomExecutionPlan { projection: Some([0]), cache: PlanProperties { eq_properties: EquivalenceProperties { eq_group: EquivalenceGroup { classes: [] }, oeq_class: OrderingEquivalenceClass { orderings: [] }, constants: [], schema: Schema { fields: [Field { name: "c1", data_type: Int32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }], metadata: {} } }, partitioning: UnknownPartitioning(1), execution_mode: Bounded, output_ordering: None } }, schema: Schema { fields: [Field { name: "COUNT(*)", data_type: Int64, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "MIN(test.c1)", data_type: Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "MAX(test.c1)", data_type: Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }], metadata: {} }, input_schema: Schema { fields: [Field { name: "c1", data_type: Int32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }], metadata: {} }, metrics: ExecutionPlanMetricsSet { inner: Mutex { data: MetricsSet { metrics: [] } } }, required_input_ordering: None, input_order_mode: Linear, cache: PlanProperties { eq_properties: EquivalenceProperties { eq_group: EquivalenceGroup { classes: [] }, oeq_class: OrderingEquivalenceClass { orderings: [] }, constants: [], schema: Schema { fields: [Field { name: "COUNT(*)", data_type: Int64, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "MIN(test.c1)", data_type: Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "MAX(test.c1)", data_type: Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }], metadata: {} } }, partitioning: UnknownPartitioning(1), execution_mode: Bounded, output_ordering: None } }

I guess you skip the aggregate statistic optimization for min/max
https://github.com/apache/datafusion/blob/18042fd69138e19613844580408a71a200ea6caa/datafusion/core/src/physical_optimizer/aggregate_statistics.rs#L177-L224
You might need to check if the AggregateExpr is min/max in take_optimizable_min and  take_optimizable_max

I fixed this but now I have a test that doesn't pass on the optimizer (there are two actually)
---- single_distinct_to_groupby::tests::two_distinct_and_one_common stdout ----
thread 'single_distinct_to_groupby::tests::two_distinct_and_one_common' panicked at datafusion/optimizer/src/test/mod.rs:200:5:
assertion `left == right` failed
  left: "Projection: test.a, sum(alias2) AS sum(test.c), COUNT(alias1) AS COUNT(DISTINCT test.b), MAX(alias3) AS MAX(test.b) [a:UInt32, sum(test.c):UInt64;N, COUNT(DISTINCT test.b):Int64;N, MAX(test.b):UInt32;N]\n  Aggregate: groupBy=[[test.a]], aggr=[[sum(alias2), COUNT(alias1), MAX(alias3)]] [a:UInt32, sum(alias2):UInt64;N, COUNT(alias1):Int64;N, MAX(alias3):UInt32;N]\n    Aggregate: groupBy=[[test.a, test.b AS alias1]], aggr=[[sum(test.c) AS alias2, MAX(test.b) AS alias3]] [a:UInt32, alias1:UInt32, alias2:UInt64;N, alias3:UInt32;N]\n      TableScan: test [a:UInt32, b:UInt32, c:UInt32]"
 right: "Projection: test.a, sum(alias2) AS sum(test.c), COUNT(alias1) AS COUNT(DISTINCT test.b), MAX(alias1) AS MAX(DISTINCT test.b) [a:UInt32, sum(test.c):UInt64;N, COUNT(DISTINCT test.b):Int64;N, MAX(DISTINCT test.b):UInt32;N]\n  Aggregate: groupBy=[[test.a]], aggr=[[sum(alias2), COUNT(alias1), MAX(alias1)]] [a:UInt32, sum(alias2):UInt64;N, COUNT(alias1):Int64;N, MAX(alias1):UInt32;N]\n    Aggregate: groupBy=[[test.a, test.b AS alias1]], aggr=[[sum(test.c) AS alias2]] [a:UInt32, alias1:UInt32, alias2:UInt64;N]\n      TableScan: test [a:UInt32, b:UInt32, c:UInt32]"

That suggests that the optimizer cannot use the existing aliases / doesn't understand the existing aliases that provide DISTINCT test.b . Looking, any tip would be highly appreciated

I fixed this but now I have a test that doesn't pass on the optimizer (there are two actually)
---- single_distinct_to_groupby::tests::two_distinct_and_one_common stdout ----
thread 'single_distinct_to_groupby::tests::two_distinct_and_one_common' panicked at datafusion/optimizer/src/test/mod.rs:200:5:
assertion `left == right` failed
  left: "Projection: test.a, sum(alias2) AS sum(test.c), COUNT(alias1) AS COUNT(DISTINCT test.b), MAX(alias3) AS MAX(test.b) [a:UInt32, sum(test.c):UInt64;N, COUNT(DISTINCT test.b):Int64;N, MAX(test.b):UInt32;N]\n  Aggregate: groupBy=[[test.a]], aggr=[[sum(alias2), COUNT(alias1), MAX(alias3)]] [a:UInt32, sum(alias2):UInt64;N, COUNT(alias1):Int64;N, MAX(alias3):UInt32;N]\n    Aggregate: groupBy=[[test.a, test.b AS alias1]], aggr=[[sum(test.c) AS alias2, MAX(test.b) AS alias3]] [a:UInt32, alias1:UInt32, alias2:UInt64;N, alias3:UInt32;N]\n      TableScan: test [a:UInt32, b:UInt32, c:UInt32]"
 right: "Projection: test.a, sum(alias2) AS sum(test.c), COUNT(alias1) AS COUNT(DISTINCT test.b), MAX(alias1) AS MAX(DISTINCT test.b) [a:UInt32, sum(test.c):UInt64;N, COUNT(DISTINCT test.b):Int64;N, MAX(DISTINCT test.b):UInt32;N]\n  Aggregate: groupBy=[[test.a]], aggr=[[sum(alias2), COUNT(alias1), MAX(alias1)]] [a:UInt32, sum(alias2):UInt64;N, COUNT(alias1):Int64;N, MAX(alias1):UInt32;N]\n    Aggregate: groupBy=[[test.a, test.b AS alias1]], aggr=[[sum(test.c) AS alias2]] [a:UInt32, alias1:UInt32, alias2:UInt64;N]\n      TableScan: test [a:UInt32, b:UInt32, c:UInt32]"

That suggests that the optimizer cannot use the existing aliases / doesn't understand the existing aliases that provide DISTINCT test.b . Looking, any tip would be highly appreciated

I think we should add distinct for MIN/MAX so we can get the distinct after group by is converted to distinct function

I fixed this but now I have a test that doesn't pass on the optimizer (there are two actually)
---- single_distinct_to_groupby::tests::two_distinct_and_one_common stdout ----
thread 'single_distinct_to_groupby::tests::two_distinct_and_one_common' panicked at datafusion/optimizer/src/test/mod.rs:200:5:
assertion `left == right` failed
  left: "Projection: test.a, sum(alias2) AS sum(test.c), COUNT(alias1) AS COUNT(DISTINCT test.b), MAX(alias3) AS MAX(test.b) [a:UInt32, sum(test.c):UInt64;N, COUNT(DISTINCT test.b):Int64;N, MAX(test.b):UInt32;N]\n  Aggregate: groupBy=[[test.a]], aggr=[[sum(alias2), COUNT(alias1), MAX(alias3)]] [a:UInt32, sum(alias2):UInt64;N, COUNT(alias1):Int64;N, MAX(alias3):UInt32;N]\n    Aggregate: groupBy=[[test.a, test.b AS alias1]], aggr=[[sum(test.c) AS alias2, MAX(test.b) AS alias3]] [a:UInt32, alias1:UInt32, alias2:UInt64;N, alias3:UInt32;N]\n      TableScan: test [a:UInt32, b:UInt32, c:UInt32]"
 right: "Projection: test.a, sum(alias2) AS sum(test.c), COUNT(alias1) AS COUNT(DISTINCT test.b), MAX(alias1) AS MAX(DISTINCT test.b) [a:UInt32, sum(test.c):UInt64;N, COUNT(DISTINCT test.b):Int64;N, MAX(DISTINCT test.b):UInt32;N]\n  Aggregate: groupBy=[[test.a]], aggr=[[sum(alias2), COUNT(alias1), MAX(alias1)]] [a:UInt32, sum(alias2):UInt64;N, COUNT(alias1):Int64;N, MAX(alias1):UInt32;N]\n    Aggregate: groupBy=[[test.a, test.b AS alias1]], aggr=[[sum(test.c) AS alias2]] [a:UInt32, alias1:UInt32, alias2:UInt64;N]\n      TableScan: test [a:UInt32, b:UInt32, c:UInt32]"

That suggests that the optimizer cannot use the existing aliases / doesn't understand the existing aliases that provide DISTINCT test.b . Looking, any tip would be highly appreciated

I think we should add distinct for MIN/MAX so we can get the distinct after group by is converted to distinct function
But I think there is no difference between MIN and Distinct Min, maybe we could remove distinct for MIN/MAX beforehand? Introduce EliminateDistinct optimize rule for MIN/MAX.

Is this a part of the optimizer i.e. https://github.com/edmondop/arrow-datafusion/blob/main/datafusion/optimizer/src/replace_distinct_aggregate.rs ? Thank your for your help btw

I fixed this but now I have a test that doesn't pass on the optimizer (there are two actually)
---- single_distinct_to_groupby::tests::two_distinct_and_one_common stdout ----
thread 'single_distinct_to_groupby::tests::two_distinct_and_one_common' panicked at datafusion/optimizer/src/test/mod.rs:200:5:
assertion `left == right` failed
  left: "Projection: test.a, sum(alias2) AS sum(test.c), COUNT(alias1) AS COUNT(DISTINCT test.b), MAX(alias3) AS MAX(test.b) [a:UInt32, sum(test.c):UInt64;N, COUNT(DISTINCT test.b):Int64;N, MAX(test.b):UInt32;N]\n  Aggregate: groupBy=[[test.a]], aggr=[[sum(alias2), COUNT(alias1), MAX(alias3)]] [a:UInt32, sum(alias2):UInt64;N, COUNT(alias1):Int64;N, MAX(alias3):UInt32;N]\n    Aggregate: groupBy=[[test.a, test.b AS alias1]], aggr=[[sum(test.c) AS alias2, MAX(test.b) AS alias3]] [a:UInt32, alias1:UInt32, alias2:UInt64;N, alias3:UInt32;N]\n      TableScan: test [a:UInt32, b:UInt32, c:UInt32]"
 right: "Projection: test.a, sum(alias2) AS sum(test.c), COUNT(alias1) AS COUNT(DISTINCT test.b), MAX(alias1) AS MAX(DISTINCT test.b) [a:UInt32, sum(test.c):UInt64;N, COUNT(DISTINCT test.b):Int64;N, MAX(DISTINCT test.b):UInt32;N]\n  Aggregate: groupBy=[[test.a]], aggr=[[sum(alias2), COUNT(alias1), MAX(alias1)]] [a:UInt32, sum(alias2):UInt64;N, COUNT(alias1):Int64;N, MAX(alias1):UInt32;N]\n    Aggregate: groupBy=[[test.a, test.b AS alias1]], aggr=[[sum(test.c) AS alias2]] [a:UInt32, alias1:UInt32, alias2:UInt64;N]\n      TableScan: test [a:UInt32, b:UInt32, c:UInt32]"

That suggests that the optimizer cannot use the existing aliases / doesn't understand the existing aliases that provide DISTINCT test.b . Looking, any tip would be highly appreciated

I think we should add distinct for MIN/MAX so we can get the distinct after group by is converted to distinct function
But I think there is no difference between MIN and Distinct Min, maybe we could remove distinct for MIN/MAX beforehand? Introduce EliminateDistinct optimize rule for MIN/MAX.

Is this a part of the optimizer i.e. https://github.com/edmondop/arrow-datafusion/blob/main/datafusion/optimizer/src/replace_distinct_aggregate.rs ? Thank your for your help btw

I don't think so, Distinct/Distinct On is different from distinct in the function.

@jayzhan211 I have started experimenting with an optimizer rule, but removing the distinct result in such an error:
running 2 tests
test eliminate_distinct::tests::eliminate_distinct_from_min_expr ... FAILED
test eliminate_nested_union::tests::eliminate_distinct_nothing ... ok

failures:

---- eliminate_distinct::tests::eliminate_distinct_from_min_expr stdout ----
Transformed yes true
Error: Context("Optimizer rule 'eliminate_distinct' failed", Context("eliminate_distinct", Internal("Failed due to a difference in schemas, original schema: DFSchema { inner: Schema { fields: [Field { name: \"a\", data_type: UInt32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: \"MIN(DISTINCT test.b)\", data_type: Int64, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }], metadata: {} }, field_qualifiers: [Some(Bare { table: \"test\" }), None], functional_dependencies: FunctionalDependencies { deps: [FunctionalDependence { source_indices: [0], target_indices: [0, 1], nullable: false, mode: Single }] } }, new schema: DFSchema { inner: Schema { fields: [Field { name: \"a\", data_type: UInt32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: \"MIN(test.b)\", data_type: Int64, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }], metadata: {} }, field_qualifiers: [Some(Bare { table: \"test\" }), None], functional_dependencies: FunctionalDependencies { deps: [FunctionalDependence { source_indices: [0], target_indices: [0, 1], nullable: false, mode: Single }] } }")))

Do I need to change also the equivalence rules?

eliminate_distinct_from_min_expr

You can take single_distinct_groupby as reference, there is alias to remain schema equivalence.
Also, I suggest we introduce this rule in another PR, not mixing this with MIN/MAX UDAF.

Thanks. I guess I wasn't clear in my comment here https://github.com/apache/datafusion/pull/11013#issuecomment-2183027880 . How should that test failure be addressed? It seems that min/max udaf uses other aliases and is not reusing the intermediate results already available

Thanks. I guess I wasn't clear in my comment here #11013 (comment) . How should that test failure be addressed? It seems that min/max udaf uses other aliases and is not reusing the intermediate results already available

The failure is because of the name mismatch, one with distinct, one w/o. I think we should alias it to ensure the schema remain unchanged. Then, the failure should be fixed too

Thanks. I guess I wasn't clear in my comment here #11013 (comment) . How should that test failure be addressed? It seems that min/max udaf uses other aliases and is not reusing the intermediate results already available

If we eliminate distinct of min/max prior to single_distinct_to_group_by, we don't expect to get distinct min/max at this point, we should rewrite the test to other function like sum.

---- single_distinct_to_groupby::tests::two_distinct_and_one_common

Wouldn't eliminating it require the optimizer rule? Or do you suggest I update the test case? Or the expected value?

---- single_distinct_to_groupby::tests::two_distinct_and_one_common

Wouldn't eliminating it require the optimizer rule? Or do you suggest I update the test case? Or the expected value?

Yes, I suggest we update the test like
    #[test]
    fn one_distinct_and_two_common() -> Result<()> {
        let table_scan = test_table_scan()?;

        let plan = LogicalPlanBuilder::from(table_scan)
            .aggregate(
                vec![col("a")],
                vec![sum(col("c")), count_distinct(col("b")), max(col("b"))],
            )?
            .build()?;
        // Should work
        let expected = "Projection: test.a, sum(alias2) AS sum(test.c), COUNT(alias1) AS COUNT(DISTINCT test.b), MAX(alias3) AS MAX(test.b) [a:UInt32, sum(test.c):UInt64;N, COUNT(DISTINCT test.b):Int64;N, MAX(test.b):UInt32;N]\n  Aggregate: groupBy=[[test.a]], aggr=[[sum(alias2), COUNT(alias1), MAX(alias3)]] [a:UInt32, sum(alias2):UInt64;N, COUNT(alias1):Int64;N, MAX(alias3):UInt32;N]\n    Aggregate: groupBy=[[test.a, test.b AS alias1]], aggr=[[sum(test.c) AS alias2, MAX(test.b) AS alias3]] [a:UInt32, alias1:UInt32, alias2:UInt64;N, alias3:UInt32;N]\n      TableScan: test [a:UInt32, b:UInt32, c:UInt32]";

        assert_optimized_plan_equal(plan, expected)
    }

There seems to be a column added to the Aggregate node in the logical plan, can that affect performance and/or memory footprint? This was the reason why I didn't update the test in the first place
This is a subset of the new plan
aggr=[[sum(test.c) AS alias2, MAX(test.b) AS alias3]] [a:UInt32, alias1:UInt32, alias2:UInt64;N, alias3:UInt32;N]\n      TableScan: test [a:UInt32, b:UInt32, c:UInt32]"

while this is the subset from the previous plan
Aggregate: groupBy=[[test.a, test.b AS alias1]], aggr=[[sum(test.c) AS alias2]] [a:UInt32, alias1:UInt32, alias2:UInt64;N]\n      TableScan: test [a:UInt32, b:UInt32, c:UInt32]"

there is an alias3:UInt64 that gets added

There seems to be a column added to the Aggregate node in the logical plan, can that affect performance and/or memory footprint? This was the reason why I didn't update the test in the first place
This is a subset of the new plan
aggr=[[sum(test.c) AS alias2, MAX(test.b) AS alias3]] [a:UInt32, alias1:UInt32, alias2:UInt64;N, alias3:UInt32;N]\n      TableScan: test [a:UInt32, b:UInt32, c:UInt32]"

while this is the subset from the previous plan
Aggregate: groupBy=[[test.a, test.b AS alias1]], aggr=[[sum(test.c) AS alias2]] [a:UInt32, alias1:UInt32, alias2:UInt64;N]\n      TableScan: test [a:UInt32, b:UInt32, c:UInt32]"

there is an alias3:UInt64 that gets added

Remove the Min/Max matching in is_single_distinct_agg and the alias is removed

I think as long as you can explain me how to resolve the current test failure I should be fine. Agree using names for min and max unwrapping is not very robust

Now that I have spent some more time working with this PR I see it still needs some additional work -- sorry for the noise

I think as long as you can explain me how to resolve the current test failure I should be fine. Agree using names for min and max unwrapping is not very robust

I started with merging up from main and resolving the conflicts: https://github.com/edmondop/arrow-datafusion/pull/1
Once that is merged / ready I think we could keep hacking at this PR together
Alternately, we could potentially make some smaller PRs to remove the barriers / unblock this one -- for example we could remove the direct use of the Min/Max PhysicalExprs
For example in  https://github.com/apache/datafusion/pull/11013#discussion_r1657767157
As well as here: https://github.com/apache/datafusion/blob/f58df32753a06dd1b67597a12cdf68007e249338/datafusion/physical-plan/src/aggregates/mod.rs#L485-L494
If you are interested, I can file tickets explaining how those smaller tasks

Now that I have spent some more time working with this PR I see it still needs some additional work -- sorry for the noise

I think as long as you can explain me how to resolve the current test failure I should be fine. Agree using names for min and max unwrapping is not very robust

I started with merging up from main and resolving the conflicts: https://github.com/edmondop/arrow-datafusion/pull/1
Once that is merged / ready I think we could keep hacking at this PR together
Alternately, we could potentially make some smaller PRs to remove the barriers / unblock this one -- for example we could remove the direct use of the Min/Max PhysicalExprs
For example in  https://github.com/apache/datafusion/pull/11013#discussion_r1657767157
As well as here: https://github.com/apache/datafusion/blob/f58df32753a06dd1b67597a12cdf68007e249338/datafusion/physical-plan/src/aggregates/mod.rs#L485-L494
If you are interested, I can file tickets explaining how those smaller tasks

Yes 🙏

If you are interested, I can file tickets explaining how those smaller tasks

Yes 🙏

Ok, I filed https://github.com/apache/datafusion/issues/11153 and then some starting tasks like this
Task List

[ ] https://github.com/apache/datafusion/issues/11152
[ ] https://github.com/apache/datafusion/issues/11153

Hopefully that helps

Let me help with this, I think the current blocker are failed tests in CI?

optimizers_catch_all_statistics failed because aggregate_statictis are not checking with UDAF
fn is_min(agg_expr: &dyn AggregateExpr) -> bool {
    if let Some(expr) = agg_expr.as_any().downcast_ref::<AggregateFunctionExpr>() {
        return expr.fun().name() == "MIN"
    }

    false
}

fn is_max(agg_expr: &dyn AggregateExpr) -> bool {
    if let Some(expr) = agg_expr.as_any().downcast_ref::<AggregateFunctionExpr>() {
        return expr.fun().name() == "MAX"
    }

    false
}

I think we need to make get_minmax_desc an UDAF method before moving on

btw, there is nullable in min/max too, should we keep it 🤔

We also need to add get_minmax_desc method to AggregateUDAFImpl

optimizers_catch_all_statistics failed because aggregate_statictis are not checking with UDAF
fn is_min(agg_expr: &dyn AggregateExpr) -> bool {
    if let Some(expr) = agg_expr.as_any().downcast_ref::<AggregateFunctionExpr>() {
        return expr.fun().name() == "MIN"
    }

    false
}

fn is_max(agg_expr: &dyn AggregateExpr) -> bool {
    if let Some(expr) = agg_expr.as_any().downcast_ref::<AggregateFunctionExpr>() {
        return expr.fun().name() == "MAX"
    }

    false
}

This change was issued here https://github.com/apache/datafusion/pull/11261/files

optimizers_catch_all_statistics failed because aggregate_statictis are not checking with UDAF
fn is_min(agg_expr: &dyn AggregateExpr) -> bool {
    if let Some(expr) = agg_expr.as_any().downcast_ref::<AggregateFunctionExpr>() {
        return expr.fun().name() == "MIN"
    }

    false
}

fn is_max(agg_expr: &dyn AggregateExpr) -> bool {
    if let Some(expr) = agg_expr.as_any().downcast_ref::<AggregateFunctionExpr>() {
        return expr.fun().name() == "MAX"
    }

    false
}

This change was issued here https://github.com/apache/datafusion/pull/11261/files

I don't get it. What is the reason not to check with UDAF?

@jayzhan211 I am missing a piece, AggregateExpr implementation doesn't include AggregateUDFImpl can you clarify?

@edmondop CI is still red

@edmondop CI is still red. Btw the PR grows so large, maybe you can try to split the changes into several PRs if you can't pass the CI.

@jayzhan211 yes, it's still unclear to me what the fix is for the single_distinct_group. I think if you guide me there we can get this ready soon

@jayzhan211 I am missing a piece, AggregateExpr implementation doesn't include AggregateUDFImpl can you clarify?

Yes, it makes sense.
All the UDAFs are in AggregateFunctionExpr, and you can get AggregateUDFImpl method from it.

I think it is because of you remove distinct from min. Do you plan to add eliminate distinct in min/max in another PR first? Or you can also deal with distinct in this PR first.

I think it is because of you remove distinct from min. Do you plan to add eliminate distinct in min/max rule in another PR first? Or you can also deal with distinct in this PR first.

I will eliminate distinct min/max in a separate PR, to avoid growing this too much. Where did I remove distinct from min?

I think it is because of you remove distinct from min. Do you plan to add eliminate distinct in min/max rule in another PR first? Or you can also deal with distinct in this PR first.

I will eliminate distinct min/max in a separate PR, to avoid growing this too much. Where did I remove distinct from min?

I guess we could add it in analyzer rule, it is similar to CountWildcardRule in some sense.

I think it is because of you remove distinct from min. Do you plan to add eliminate distinct in min/max rule in another PR first? Or you can also deal with distinct in this PR first.

I will eliminate distinct min/max in a separate PR, to avoid growing this too much. Where did I remove distinct from min?

I guess we could add it in analyzer rule, it is similar to CountWildcardRule in some sense.

Can we get the test to pass without a change to analyzer rules or optimizers?

I think it is because of you remove distinct from min. Do you plan to add eliminate distinct in min/max rule in another PR first? Or you can also deal with distinct in this PR first.

I will eliminate distinct min/max in a separate PR, to avoid growing this too much. Where did I remove distinct from min?

I guess we could add it in analyzer rule, it is similar to CountWildcardRule in some sense.

Can we get the test to pass without a change to analyzer rules or optimizers?

I think so, you change distinct_min to min, if you support distinct_min, it might be enough

I think it is because of you remove distinct from min. Do you plan to add eliminate distinct in min/max rule in another PR first? Or you can also deal with distinct in this PR first.

I will eliminate distinct min/max in a separate PR, to avoid growing this too much. Where did I remove distinct from min?

I guess we could add it in analyzer rule, it is similar to CountWildcardRule in some sense.

Can we get the test to pass without a change to analyzer rules or optimizers?

I think so, you change distinct_min to min, if you support distinct_min, it might be enough

how did I change distinct_min to min?

I think this is now blocked by https://github.com/apache/datafusion/issues/11595

As I understand it this PR is still a work in progress, so marking it as a draft

@jayzhan211 the change is dropping the limit in the physical plan node, I wasn't able to find out the source of it. Do you have any hint ?

@edmondop
You need to add get_minmax_desc method to AggregateFunctionExpr
https://github.com/apache/datafusion/blob/01dc3f9766e1e36ef9864effdb1a7c89d138a982/datafusion/core/src/physical_optimizer/topk_aggregation.rs#L48-L85

@jayzhan211 I am a little confused about the test case here https://github.com/apache/datafusion/blob/a721be1b1d863b5b15a7a945c37ec051c449c46f/datafusion/sqllogictest/test_files/aggregate.slt#L1779
I have noticed that in the signature for min/max as an AggregateFunction, TimeInterval is not added https://github.com/apache/datafusion/blob/a721be1b1d863b5b15a7a945c37ec051c449c46f/datafusion/expr/src/aggregate_function.rs#L119.
If I don't add it, the SQL test fails because arrow_type(min(c1)) returns Utf8 for me, but if I add it then the query fails with error
External error: query failed: DataFusion error: Internal error: Min/Max accumulator not implemented for type Interval(MonthDayNano).

I would like to add eliminate min/max to optimizer, I think it could simplify the optimizer a bit.

I tried to extract some of the work here https://github.com/apache/datafusion/pull/11696 to reduce a bit the scope of the PR, although it is not easy

Apologies for the large change @alamb and @jayzhan211  :(

We are really close!  I left some comments but they are mostly improvement on codebase

@jayzhan211 fyi all the tests in scalar subquery failed with the stubs, I restored import that used the  real implementation

You use the name "min" in Max, and "max" in Min for stubs

@jayzhan211 fyi all the tests in scalar subquery failed with the stubs, I restored import that used the real implementation

wait, we should use stubs instead of the real function, otherwise we import the functions-aggregate dependency

It is available, I hadn't have to do anything

@jayzhan211 fyi all the tests in scalar subquery failed with the stubs, I restored import that used the real implementation

wait, we should use stubs instead of the real function, otherwise we import the functions-aggregate dependency

It is available, I hadn't have to do anything / update the Cargo

I see. We don't need stubs.

TODO:

MIN/MAX lowercase name
Remove AggregateFunctionDefition enum
Support ordering for UDAF in proto

Thanks @edmondop and @alamb

TODO:

@jayzhan211 should we file tickets to track this work (I think @edmondop  has a PR for the lower case name). The AggregateFunctionDefition removal would be a good "Good First Issue` ticket
I am happy to file the tickets if you would like

TODO:

@jayzhan211 should we file tickets to track this work (I think @edmondop has a PR for the lower case name). The AggregateFunctionDefition removal would be a good "Good First Issue` ticket
I am happy to file the tickets if you would like

Sure, thanks

MIN/MAX lowercase name

I think this is tracked by https://github.com/apache/datafusion/issues/11779 (and @edmondop  has a PR for it https://github.com/apache/datafusion/pull/11795)

Remove AggregateFunctionDefition enum

Turnsout @lewiszlw  already has a PR for this one: https://github.com/apache/datafusion/pull/11803#pullrequestreview-2217671212

Support ordering for UDAF in proto

File https://github.com/apache/datafusion/issues/11804 and will add a ticket link to the code

https://github.com/apache/datafusion/pull/11805 <-- comment PR


Bloons tower defense 6 crashing without showing start screen but while showing the command prompt looking thing.

All of the following criteria must be met

[X] All Requirements must be installed.
[X] Full Latest.log file included. If no file exists then leave this unchecked and state so.

All of the following are optional to answer

[ ] Tried reinstalling the Game.
[ ] Tried reinstalling MelonLoader.
[ ] Tried restarting PC.
[ ] Was able to see the Start Screen.

Describe the issue.
Latest.log
Or alternatively if you don't want to download the log:
[16:20:31.227] ------------------------------
[16:20:31.381] MelonLoader v0.6.1 Open-Beta
[16:20:31.383] OS: Windows 10
[16:20:31.383] Hash Code: 696B58144EEC73C72FA36A811CA73312EEE4EC28AD5E3527BDA1E14F388A
[16:20:31.383] ------------------------------
[16:20:31.384] Game Type: Il2cpp
[16:20:31.384] Game Arch: x64
[16:20:31.384] ------------------------------
[16:20:31.385] Core::BasePath = D:\Steam\steamapps\common\BloonsTD6
[16:20:31.385] Game::BasePath = D:\Steam\steamapps\common\BloonsTD6
[16:20:31.385] Game::DataPath = D:\Steam\steamapps\common\BloonsTD6\BloonsTD6_Data
[16:20:31.385] Game::ApplicationPath = D:\Steam\steamapps\common\BloonsTD6\BloonsTD6.exe
[16:20:31.385] Runtime Type: net6
[16:20:31.639] ------------------------------
[16:20:31.639] Game Name: BloonsTD6
[16:20:31.639] Game Developer: Ninja Kiwi
[16:20:31.641] Unity Version: 2021.3.16f1
[16:20:31.641] Game Version: 38.3
[16:20:31.642] ------------------------------
Did you attach your log file?

[X] Yes, I attached my log file to the text box above.
[ ] No, I could not find a log file at {Game_Directory}\MelonLoader\Latest.log

should be fixed in nightly.

what does nightly mean?

i have this too i just deleted the BTD6EpicGamesModCompat and then installed a older version of that the 1.1 and it still crashes but now i think its the melon loader ill reinstall it

This is nightly use version MelonLoader.Windows.x64.CI.Release

Seems like this issue is resolved, If it wasn't, feel free to reopen it.


Change laravel localization link in the readme.

Update laravel localization link in the readme.

LGTM! Thank you!


Issue with client port and .env* variables

❓Question
The port parameter can be defined as a razzle options. But .env* files variables are not available to modifyOptions, so it's not possible to set the port using a dotenv variable. Is there a way that this could be remedied?

Fixed https://github.com/jaredpalmer/razzle/commit/bcfbf44c4eba54913a59be6ab6613a618387ac0b

Fixed https://github.com/jaredpalmer/razzle/commit/bcfbf44c4eba54913a59be6ab6613a618387ac0b


How to use with Sentinel?

How to use with Sentinel?

I don't know. Did you try setting it up with sentinel and into what issues did you run?

No response.


fix<EMAIL_ADDRESS>

for https://github.com/redhat-marketplace/datactl/security/dependabot/12

resolved in #45


forum not accessible via https

https://forum.wpn-xm.org/
http://forum.wpn-xm.org/ works, though
An error occurred during a connection to forum.wpn-xm.org. SSL received a record that exceeded the maximum permissible length. Error code: SSL_ERROR_RX_RECORD_TOO_LONG

Resolved.


How can I subscribe in Slack Github for new releases?

I'd like to be able to subscribe to this repository releases within Slack Github app.
E.g.
For https://github.com/grafana/grafana I'm getting:

... but for this repository:

Yeah, so according to this issue, that would require an admin installing the Slack integration on this repo. I don't see any problem with that, and I'll ask around to see if someone's interested in doing it. But I don't know if it will happen, so as a workout you could add the releases RSS feed (https://github.com/prometheus/prometheus/releases.atom) to Slack.

Thanks @LeviHarrison for the suggestion, but unfortunately I'm getting:

Rats, we couldn’t connect to the URL (http://prometheus//releases.atom).

when I run:
/feed subscribe prometheus/prometheus/releases.atom

/feed subscribe https://github.com/prometheus/prometheus/releases.atom

It's the same command I've already tried 🙁

You did not specify https://github.com at the beginning

oh my bad. Thank you! 👍


Build full Memento estimators cube on latest Census

Mim Cheol has requested a new estimators cube to be built on the latest data release of the full Census.

From email communication w/Mim Cheol:

Wed, Nov 1, 1:39 PM (5 days ago)
I was able to reduce the size from 24GB to 17GB for a modest win. You can download from this link.
If you have time to review the pull request, I'll merge it to main upon your approval. There aren't any changes related to the computation, so I'm really just asking for a sanity check.
I believe we can regenerate in < 20 hours now.  (I generated it over 3 incremental runs, with optimizations applied along the way, so I don't have a true elapsed time.)
Wednesday, November 1, 2023 8:09:32 AM
Update: The build was quite slow and required some considerable work to optimize. But I have now rebuilt the estimators cube. It's quite large, at 24GB, due to the extended number of dimensions. However, this can be made considerably smaller with (hopefully!) a small effort.  I will attempt that tomorrow and if all goes well, will share the new cube.

Cube is stored at s3://atolopko-tmp/memento/estimators_cube.2023-10-23-homo_sapiens-full.tar

Mim Cheol wrote:

Confirmed the cube can be read and merged the PR.
Here's a figure demonstrating the similarity of precomputation strategy to the original memento using the simplest scenario possible - cell type comparisons within 1 (same) person! This exact figure was made with a smaller cube I had generated, but I will extend this to the one Andrew just made.

Private Zenhub Image


[WIP] Adding a complete Docker setup

I wanted to try to run the whole project, and doing it using Docker, so here's my contribution on that topic 😉
DONE / Setup ✅

[ ] Dockerfile used to build the services (passenger, booking, flight, identity)
[ ] Docker Compose files for the services
[ ] External docker network, used by both compose.yaml files
[ ] New .env file, replacing localhost by containers hostnames

TODO / Improvements 🚧

[ ] Replace localhost references in https://github.com/meysamhadeli/booking-microservices-nestjs/blob/fb352adfeab94605bba45ced2a426714a21df92a/src/booking/src/booking/http-client/services/passenger/passenger-client.ts#L17 and https://github.com/meysamhadeli/booking-microservices-nestjs/blob/fb352adfeab94605bba45ced2a426714a21df92a/src/booking/src/booking/http-client/services/flight/flight.client.ts#L22
[ ] Script to initialize PostgreSQL databases (@see https://gist.github.com/onjin/2dd3cc52ef79069de1faa2dfd456c945 and comments inside compose.infrastructure.yaml)
[ ] Add volumes to compose.services.yaml to be able to do live modifications ? (can then face issues with node_modules synchronization between host (files on disk, mounted by the volume mapping) and container (newly generated files, built via docker))

An implementation of Kubernetes for the services would be a great improvement

@TBG-FR
Thanks for contribution :)
I updated all packages to last version and in this PR is very big and we have many conflicts.
Please if it possible for docker compose just create PR specific to this topic and for other topic please create separated PR.


Improve processing/import CLI workflow

One thing I didn't figure out in #24 is how to best refactor the integration of node assembly with cached node generation from individual processors. Currently, indra_cogex.representation.Node objects use INDRA-standardized namespace and ID pairs whereas the dumped tables use a single CURIE string with a different namespace and ID standard. Assembly works directly on Node objects which means that assembly can only happen if nodes are collected from processors. In principle we could re-read the dumped node tables into Node objects, then assemble them, and dump them again into an assembled table but that seems a bit "dirty" to me (instead of just working with the original Node objects that processors generate).
Originally posted by @bgyori in https://github.com/bgyori/indra_cogex/issues/24#issuecomment-840960122

This was solved by #37


Add status notification queue

Right now your application needs to poll step function statuses to be aware of job completion. We are adding SQS queues with events containing the completion status of each stepfunction that you can subscribe to in your user-facing application.

Complete


Multiple copies of react when both module and project are bundled with webpack 2

I have made a module named as services which serves the loading bar, notifications and flash banner etc to other projects. I bundled this module by babel and it was running perfect but as the requirements kept growing for services so i have to bundled this from webpack-2 because of css type issues. I bundled it as a library. But when i uses notifications which are imported from services, it gives such warnings
I have already tried resolve.alias and externals properties of webpack but no use  Any suggestions Please?

It looks like you just deleted our lovely crafted issue template. It was there for good reasons. Please help us solving your issue by answering the questions asked in this template. I'm closing this. Please open a new issue with filled issue template. Also make sure your issue is not a question. Questions should be posted on Stack Overflow.


Corrected political message in README

I don't think GitHub is an appropriate place for such political statements, but if you chose to make such a statement, at least make it unambiguous.
So I've corrected the statement to read "Free Palestine from Hamas", because Hamas is the true oppressor of Palestinians, and I wanted this to be clear. Here's why:

Hamas received hundreds of millions of dollars in humanitarian aid from all over the world. This aid was supposed to be used for building schools and hospitals, but instead, Hamas used it to build terror tunnels and rockets.
Hamas hides military targets behind civilian population.
The Hamas leadership enjoys a wealthy lifestyle while the rest of the population lives in extreme poverty.
During conflicts, Hamas protects its combatants by hiding them in their terror tunnles and leaves everyone else exposed to counter rocket attacks.
Hamas executes their opponents, forcing everyone to "democratically" elect them over and over again.

This is a very partial list, the complete list can probably go on forever.
 I have 140k students on Udemy, from all over the world - Palestinians, Syrians, Lebanese, Egyptians and more. The eye-to-eye conversations we have together, collaborating, setting aside our differences are heartwarming.
I live abroad and have mentored refugees in Hack Your Future. I have wonderful with colleagues from all over the world, and even though we might disagree on certain political matters, we like each other.
Coding is like music. It's an art.  Please do the right thing and keep your dividing statements out of this wonderful world of software development.

+1 @ykadosh @arielweinberger ❤ 🇮🇱

I was debating wether or not to throw my glove into this ring or not, but I think that I should.
First off, I must remark that I don't know any of you personally (except the person that pointed me here), but I'd like to believe that no ill harm was done on purpose.
A lot of political and racial crises go uncovered by the media, especially in the eastern part of the world. It is paramount that we channel our morals and energy in the justified direction. Let's give @acao the benefit of the doubt, and not devolve this conversation.
Back to topic, the Israel-Palestinian conflict is not a simple issue that can be summed via a mathematical equation such as 🇵🇸 > 🇮🇱 , but rather a complex political, territorial and religious conflict that is going on for decades. For instance I think that the remark Black Lives Matter is actually quite good, since it does not necessarily point fingers, the issue is vast and there is no single attribute that we can point at to be the source of it.
If you want I'd be more than happy to talk to you, explaining my personal viewpoint (which I tend to keep to myself and close friends), everything that I will say will be backed by Wikipedia articles, and other articles by prominent states, my contact details are in my profile.

100% approved! Well done man!

There is no palestine.
FREE ISRAEL FROM THE ARAB OCCUPATION

There is no palestine.
FREE ISRAEL FROM THE ARAB OCCUPATION

Also please change the flag emoji.

People who have issues with Palestinians identifying themselves with a flag are a part of the problem in our conflict. Nobody (not even us Israelis) has the right to take out a group's right to self determination. And apparently, some countries think this flag is valid.
Stop being childish.
The statement should be removed simply because there is no room for political statements in code. Leave the political discussions for toxic social media platforms.

@acao  Why on earth is this PR still open? This PR should be either merged or fixed already. Politics and code are not friends; they are enemies. We are not interested in hearing your opinion on Palestine neither Israel. And I'm talking from an Israeli perspective who lived for 23 years in a city that suffers from rockets on a monthly basis, whose father almost died from a rocket. Still, I DO NOT care about politics when I'm coding with my colleagues from Iran, Egypt, Morocco, Gaza, and I can continue. I am more interested in Graphql and how it solves the world's problem. STOP IT.

I guess israel is stronger at github than tiktok

I truly think that both messages should be deleted, both BLM and Israel x Palestine.
Code is not the place for politics, keep it for lunch with your mates. 🍽

Any software project that chooses to express political opinions is no longer a software project - it becomes a political project, and this happens in an instant.
A political project is something I wouldn't use, or contribute to because:

No matter "who is right" the nature of politics is to be polarizing to a good extent, and polarization is the opposite of logical arguments that we need in software.
Politics as a driving interest in software make software untrustworthy. Today it's a banner in a README, what will it be tomorrow? will you serve one side better than the other? will you discriminate PRs? will you include malicious code to certain audiences?

Keep software free from politics is a badge we should all put on our repos, it should be in the code of conduct of every respectable software project.

Let's give @acao the benefit of the doubt, and not devolve this conversation.

We gave him the doubt. But there is none. You can have a look at his twitter account for more ddetails (rikki_js).He is actively involved with one side of the conflict and thats why he posted this. He took pride in this action and he also knew there was going to be a mess about it and said he isnt sorry about that.
This was done deliberately to push the political agenda of the maintainer,.

Folks, we're dealing with somebody who does not know what she wants.  One of those people who like causing drama but cannot deal with the aftermath of their actions in a mature manner. You can also tell by the amount of likes on her tweets that legitimately nobody cares about her opinion.
She saw that nobody cares about her opinion so she decided to abuse her maintainer rights here to promote hate. Let's move on folks and focus on developing great software.

Folks, we're dealing with somebody who changes their mind every second and cannot stand behind past actions (e.g. deleting tweets).  Causing drama and not being able to deal with it, very immature.
The amount of likes on her tweets also suggests that nobody cares. Let's move on folks and focus on developing great software.

The Kurdish people are facing exactly the same situation yet we don't complain about it, so please stop with the double standards.

Always make sure you have some good whataboutism in your statement!

The GraphQL technical steering committee is working on a policy to guide the use of political speech from the voice of a GraphQL project. The original author chose to revert the original change via #1879 until we complete that policy. This should resolve this issue, so I am closing it.
As a reminder, all discussion within GraphQL projects must adhere to our Code of Conduct.

Congratulations for the end of this saga. Lets focus on good free software instead of politics.


[BUG] /setup often results in PHP OOM

/setup shows a PHP memory_limit requirement of 128M, but loading /setup and/or executing tasks often returns a 500 error due to "PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted". Bumping memory_limit up to 256M appears to resolve the issue.
Error:
PHP message: PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /path/to/pathfinder/vendor/bcosca/fatfree-core/db/sql/mapper.php on line 659
Note: It was reported by fleischsalatinspace in Stash that this issue has been resolved for docker builds. I'm reporting as requested in order to apply the memory limit display fix to the main repo as well.

Fixed in #580172d81582044d16d6e45c28e2f299537447d6, will be included in next release


Add Home link to site navigation

Is your feature request related to a problem?
It was getting difficult to switch between the Home page and the other pages of website quickly. Adding the home will make switching easier and landing page will look good.
Below is the screenshot of the current website.

How you will resolve the issue?
I would like to add the Home key to the website.

Home

here is the screenshot after changes made.

@jhung , @jobara I would like to make changes.

#155

@jhung, @jobara @colinbdclark I've completed the task and pr is also open, please review it. #155

Brilliant idea 👌

Thank you for the feedback. I have put this on the list of items to review during the new design implementation.

@jhung @greatislander Has this been added in the site yet? I would like to work on adding this if it hasn't been added yet.

@kshitij86 Thanks for your interest—the new design work is still in progress so we aren't looking for work on this yet.

Adding Home to the site navigation is not something we will be doing. Part of the reason is that there are multiple methods to returning Home including the Logo and the breadcrumb.


[Bug] MyPlot error crash the start

Issue description
(sry my english is bad, google translator helped a little)

The MyPlot starts without any problems.
I created the server and then this error came up. I also don't have a world of MyPlot where is weird.

Steps to reproduce the issue

I don't know, but I would be happy if that happens.

OS and versions

Plugin Version: v.2.0.1
PocketMine-MP: 3.22.1
PHP: 7,4
Game version: PE/Win10

Other Plugins
MyPlot, DevTools, BuilderTools, FormAPI, Multiworld, EconomyAPI and MyPlugin

If you remove all other plugins, does the issue still occur? Yes
Can you provide sample, minimal reproducing code for the issue? No sorry

Console error, backtrace or other files

Not enough information. Please upload the whole crashdump file from where it says in the red error message.

Okay, here:
Sun_Aug_15-10.20.07-BST_2021.log


Enable Formula#plist stanza to accept a {hash}

Closes #5691

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.

[x] Have you successfully run brew tests with your changes locally?

Could you open a PR on homebrew-core too to change a few formulae so we can take a look at that side of the API too?

@MikeMcQuaid Sure, just any random couple of formulas that use def plist will do?

@MikeMcQuaid Sure, just any random couple of formulas that use def plist will do?

@danielbayley Yes, please. Ideally a little variation between them so we can get a feel of what it looks like.

We already have the Plist gem as a vendored dependency, use that instead of plutil.

We already have the Plist gem as a vendored dependency, use that instead of plutil.

@reitermarkus I did wonder about that actually… even better!

@danielbayley Yes, please. Ideally a little variation between them so we can get a feel of what it looks like.

@MikeMcQuaid See #36831

It's kind of a bummer that Rubocop insists we have to use :key => value syntax for this… but still beats having to use <xml> 🤢

We could change the RuboCop rule to no_mixed_keys, which would allow both styles.

We could change the RuboCop rule to no_mixed_keys, which would allow both styles.

I'm game for this 👍

I'm eager to see this merged, it may be helpful for #5743. Is there anything I can do to help? What are we waiting on?

@zbeekman See discussion in https://github.com/Homebrew/homebrew-core/pull/36831

What are we waiting on?

Me 😅 Having the time to have another run at this, along with my current lack of familiarity with the core codebase (I usually try and stay away from class heirarchy/OOP stuff… I much prefer functional programming, and even in Ruby tend to stick to lambdas etc…)

Me 😅 Having the time to have another run at this, along with my current lack of familiarity with the core codebase

No worries, I'm more or less in the same boat.

@danielbayley Feel free to ask for any questions/clarification on your pull requests and I'll do my best to help in a timely fashion.

@MikeMcQuaid @reitermarkus So the discussion on this code was happening over at https://github.com/Homebrew/homebrew-core/pull/36831#discussion_r257304430, but it makes more sense to move it here where the actual implementation is…
I just pushed what I have [kind of] working so far…

Yes, the plist do I suggested is def self.plist, while the one used by the formula is just def plist. So plist will have to forward the call to self.plist.

Right, so the plist do in the actual formula passes the block to the instance method, which forwards it to the class method:
# tap/Formula/dnsmasq.rb
plist do
  {
    Label: "sh.brew.dnsmasq",
    ProgramArguments: %w[#{opt_sbin}/dnsmasq --keep-in-foreground -C #{etc}/dnsmasq.conf],
    RunAtLoad:        true,
    KeepAlive:        true,
  }
end

# Library/Homebrew/formula.rb
def self.plist
  @plists ||= {}

  if block_given?
    plist = yield
    plist[:Label] ||= self.plist_name
    @label = plist[:Label]

    def self.plist_name
      @label
    end

    @plists[@label] = plist.to_plist
  else
    @plists[@label]
  end
end

But then the problem became how do I access the plist_name instance method from within this class method (because plist_name [and by extension plist_path] and the Label need to match)… and the only way that seemed possible was to do the same thing, which is to say [re]define it twice, both as an instance and a class method. Doing it this way works, but throws up another problem; which is that now referencing name inside the replacement class method returns homebrew.mxcl.Formulary//FormulaNamespace{shasum}//Name instead of just the formula name string as it did before:
def self.plist_name
  "homebrew.mxcl." + name # is now homebrew.mxcl.Formulary//FormulaNamespace{sha}//Name…
end

def plist_name
  # whereas `name` here was just `Name`
  self.class.plist_name
end

How do I get the plain name string back?

and get it with

plist 'sh.brew.dnsmasq'

@reitermarkus What did you mean specifically by "get it"; I know the method you sketched out returns the @plists[label] content given a label as opposed to a block which instead assigns it, but from where do I need to call it exactly, and how in that context would I even know what label to use as a reference, given that plist_name and/or name are much harder to access, and that a given formula can override these with a non default/generated label?
Also, one last question; is the point of implementing it this way to be able to call plist do multiple times in a given formula, resulting in each plist file being written? I mean, is the install_plist method (inside formula_installer.rb) supposed to run each time do plist is called, or would it need to [somehow access] and map over the @plists instance variable we assign to in the def self.plist class method? Because as it stands, this semi-working implementation I just pushed only writes out the last plist do definition in the formula…

Yeh, in general it's worth looking at the existing plist and other DSL code to see how it works and it requires both an instance and class method to be defined.

I did look at the others initially, but none of them really work in exactly the same way as this DSL method needs to.
I have to say this is a nightmare to implement even a simple feature compared to functional programming 🤦😅 But progress has been made… so just those 2 major issues to hash out I think. I hope that all makes sense?

How do I get the plain name string back?

How is def name implemented?

What did you mean specifically by "get it"

What I meant by this is that you don't define a new method for every plist but have a single one which takes the label of the plist you want it to return.
So in the default case, it would be plist plist_name do to define it and plist plist_name to get it.

How is def name implemented?

There's no such method (there is in Cask::DSL, but that is unrelated). name is defined on initialisation:
# @private
def initialize(name…
  @name = name

So is there a way to access this from inside the self.plist_name class method?

What I meant by this is that you don't define a new method for every plist but have a single one which takes the label of the plist you want it to return.

Sure, but isn't the goal here to be able to define multiple plists in a single formula… is that even possible with this approach? Also, for these cases would an array of hashes be a better API anyway; something like the in original suggestion?

So in the default case, it would be plist plist_name do to define it and plist plist_name to get it.

Right, but I'm not sure how that's supposed to work when a custom label string is supplied (either as an argument to the self.plist class method, or from the Label: property (as in the current implimentation)… from which other place would we get it, and at that point how do we even know which label string was supplied as an override? Wouldn't it have to first deal set the returned value of plist_name anyway? Does that make sense?

be able to define multiple plists in a single formula… is that even possible with this approach?

Yes, by passing any label other than plist_name.

I'm not sure how that's supposed to work when a custom label string is supplied

How are custom labels specified currently?

How are custom labels specified currently?

Just by redefining the plist_name method… and this only works for the first plist file. Formulas that need multiple just call prefix/"custom.label".write directly… not ideal.

So now the remaining problem here is that no matter how I seem to implement this class method, the formula_installer.rb#install_plist method only writes out a single defined plist do block in the test formula.
This is the other way of passing in the Label as just another hash entry… which as mentioned previously seems like a nicer API to me:
def self.plist
  @plists ||= {}

  if block_given?
    plist = yield
    plist[:Label] ||= self.plist_name
    @label = plist[:Label]

    def self.plist_name
      @label
    end

    @plists[@label] = plist.to_plist
  else
    @plists[@label]
  end
end

If no Label is defined, then the default is the same as doing it the other way @reitermarkus suggested… but either way makes no difference in terms of being able to run install_plist for each defined plist do block in the test formula… @MikeMcQuaid Do you have any ideas on how to get that working?

Do you have any ideas on how to get that working?

If I understand correctly: I think it's an acceptable limitation that the label needs defined in order for more than one plist to be used. Ideally the label would only need defined on the 2nd, 3rd, etc. Thoughts?

If I understand correctly: I think it's an acceptable limitation that the label needs defined in order for more than one plist to be used. Ideally the label would only need defined on the 2nd, 3rd, etc. Thoughts?

@MikeMcQuaid Sure, it would be… but from testing both approaches, I don't think whether the label is passed directly as a argument to the class method, or as the Label property of the {hash} passed as the block makes any difference… that seems like just a stylistic choice. The problem is that the install_plist method only ever writes one file. Does that make sense?

The problem is that the install_plist method only ever writes one file. Does that make sense?

Yup. That method will likely need modified. It's not an external/formula API so that should't be problematic.

I don't think whether the label is passed directly as a argument to the class method, or as the Label property of the {hash} passed as the block makes any difference… that seems like just a stylistic choice.

Agreed it's a stylistic choice but if we can infer that information that seems preferable to requiring it be stated explicitly.

Agreed it's a stylistic choice but if we can infer that information that seems preferable to requiring it be stated explicitly.

Right, which is why I prefer [optionally] passing in the Label along with the rest of the hash.

Yup. That method will likely need modified. It's not an external/formula API so that should't be problematic.

@MikeMcQuaid But I don't even think modifying the install_plist method solves this problem because it only ever runs once; no matter how many plist dos are defined in the formula… so what to do?

@MikeMcQuaid But I don't even think modifying the install_plist method solves this problem because it only ever runs once; no matter how many plist dos are defined in the formula… so what to do?

@danielbayley Modify it to be install_plists and install multiple plists?

I think I finally cracked it! The solution was to have def self.plist return the whole @plists instance variable ({hash}) instead of trying to somehow access each item in the hash later by label from somewhere else, as @reitermarkus suggested (the OO codebase feels way too restrictive for that to be even practical… as demonstrated trying to access name) But now I can loop over that from the install_plist method and it works.
So I have now implemented it in a way that shouldn't interfere with any existing formulae containing def plist, but enables the new plist do block (which can be specified multiple times, and should eventually replace the old def plist <<~EOF way).
@MikeMcQuaid @reitermarkus @colindean @zbeekman Please test and review…

Looks like I spoke too soon 🙈

I have now implemented it in a way that shouldn't interfere with any existing formulae

…that is, if access to variables like opt_sbin can be maintaned inside the plist do blocks somehow? See https://github.com/Homebrew/homebrew-core/pull/36831#issuecomment-470865297

Nice work @danielbayley 👏. Getting closer.

…that is, if access to variables like opt_sbin can be maintaned inside the plist do blocks somehow? See Homebrew/homebrew-core#36831 (comment)

Those are instance methods but you're trying to invoke them inside a yield in a class method. You'll need to yield them in an instance method instead.

You'll need to yield them in an instance method instead.

@MikeMcQuaid How would I do that? The block (or anything else for that matter) doesn't get passed to the def plist instance method, which is why we had to make it a class method in the first place…

@MikeMcQuaid How would I do that? The block (or anything else for that matter) doesn't get passed to the def plist instance method, which is why we had to make it a class method in the first place…

Looking at test do may help. I'm afraid I don't have the resources to help you in more depth than that but @reitermarkus might be able to.

test do doesn't do anything special, it's basically just a proxy for def test.

I think the only way to do this right now is to make the class method populate a hash which maps the label to the given block. Then the instance method fetches the block and evaluates it in the instance.

Looking at test do may help.

test do doesn't do anything special, it's basically just a proxy for def test.

def plist(&block)
  define_method(:plist, &block)
end

@MikeMcQuaid Yeah it isn't particularly helpful. Although copying that approach does restore access to instance methods like opt_sbin and so passes the correct hash to install_plist… it also reverts the ability to have multiple plist do blocks work. This would be the way to go if we didn't need multiple plists in some formulae.

I think the only way to do this right now is to make the class method populate a hash which maps the label to the given block.

Or we can just store the blocks in an array so that we can still keep the Label inside the &block… I had already tried this, and although I can access this array from both the def plist instance method, and install_plist method, .calling one of these blocks throws up the same problem in that it still throws undefined errors on instance methods like opt_sbin.

Then the instance method fetches the block and evaluates it in the instance.

@reitermarkus Does this differ from the approach I just explained? How do I evaluate the block in the correct context?

Ok, just came back to this and pretty sure I definitely have it this time! 🎉
I needed instance_eval in the right place and was missing the & (to_proc) in &block when passing it in…
@MikeMcQuaid @reitermarkus @colindean @zbeekman All rewritten formulas work (see https://github.com/Homebrew/homebrew-core/pull/36831) and brew style passes on all modified files… should be finally ready to merge?🤞

brew style is still failing. I'll review this again when brew style and brew tests are both passing. Just a heads up that I may still need to request changes after that. Thanks for all your hard work on this @danielbayley ❤

brew style is still failing.
@MikeMcQuaid Fixed. I don't think any of the test failures have anything to do with this PR… the same ones fail on master.

@danielbayley These tests are not failing on master.

@danielbayley These tests are not failing on master.

@MikeMcQuaid Ah I had tests failing on master on my machine… but they are actually different tests looking at that situation again. Looks like the (seemingly unrelated) caveats_spec expects the def plist instance method to return nil… although I think maybe the test should be changed to instead check for .empty? (because now we use an array (or hash with .to_h) This would remove the need for the extra LOC I just added to fix it. What do you think?

I think this is still a WIP. I can't edit the tags, since I'm not part of homebrew/brew.

@zbeekman It's a WIP but it's right for it to get automatically closed out if there's no activity; that's kinda the point :wink:

The reason I'm interested is that I was hoping to build off this for the plists that get utilized by unattended upgrade/unattended prefetch... but I should probably just forge ahead and converge later, if this ever gets sorted.
It would be a shame for all this hard work to go to waste though. Maybe I'll see if I can't hack at it a bit myself.

Maybe I'll see if I can't hack at it a bit myself.

Yup please do 👍

@zbeekman Have you done anything with this? I've been meaning to come back around to it… but been busy with other things, and it went from one simple PR into 3 more complicated ones 🙄 I will get back to it, but if you've made any progress let me know 👍

Not yet, been busy with the day job.
On Mon, May 6, 2019 at 10:54 AM Daniel Bayley<EMAIL_ADDRESS>wrote:

@zbeekman https://github.com/zbeekman Have you done anything with this?
I've been meaning to come back around to it… but been busy with other
things, and it went from one simple PR into 3 more complicated ones 🙄 I
will get back to it, but if you've made any progress let me know 👍
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Homebrew/brew/pull/5695#issuecomment-489650622, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AACEIPG3QU7EQTXGVUXN65DPUBBBBANCNFSM4GWFEPTA
.

Wouldn't this whole thing be easier to solve by some kind of sub-formula concept? Why does a Formula require a url, etc? If we allowed this

class ServiceA < Formula
  def plist; <<~EOS
     ...
  EOS
  end
end

class ServiceB < Formula
  def plist; <<~EOS
     ...
  EOS
  end
end

class Foo < Formula
   url ...
end

The "main" formula could install the services separately without having to download or install anything.

Lack of meta-formulas (without url) also means you can't add a formula that depends on another and then just does a post-install/install step.

Wouldn't this whole thing be easier to solve by some kind of sub-formula concept?

No.

Wouldn't this whole thing be easier to solve by some kind of sub-formula concept?

No.

Ok 😃

Closing this out as there's been no commits for several months.


Key automatic repetition does not work in web putty.

I'm pressing and holding the key, but it doesn't apply repeatedly.
Example: Press and hold the backspace key, but the entire sentence cannot be erased.
Is there a way to solve it?
Thank you for your help.

This should now work fine with the latest image.


Using a named import for the class import statement

I am using esdoc to produce documentation for my library. By default, esdoc generates an import statement at the top of each class doc that reads like this:
import ClassName from 'package-name/path-to-class-name/ClassName';

I use rollup to bundle up my library which means these direct file imports are not valid when someone uses the library. Instead, they should be using named imports like:
import {ClassName} from 'package-name';

I've read through the documentation and the issues, but haven't noticed any way of making this happen. Is this currently possible?

OS type and version: Windows 10 64bit
Node.js version: 8.5.0
ESDoc version: 1.0.4

Hi @amirmohsen , you might be able to do this using the esdoc-importpath-plugin - it lets you use regular expressions to modify the imports.
If this is about imported exports - I'm afraid this might not be possible, although if it is I would surely like to know too.  I call this "Directroy as a Module" or DAAM (pronounced damn xD),

@MattMcFarland I took a look at that plugin but it only allows you to modify the path, not the import itself.  As I said, I need a named import not a default import. I might have to dig into the code of esdoc and see if I can create a plugin to address my issue if this is not already possible. This is essential for my library because as it stands, the import statement is just wrong and misleads the users once I publish the documentation.

@amirmohsen I hear ya.
This project is really not being well maintained atm.  its a shame to be honest.  I'm currently working on another project because the owner of this one doesnt want any contributors, it's really in infancy but it aims to solve this.
TBH I think esdoc bends over backwards for classes and poorly represents modules - with docsense, I aim to have modules as first class citizens.
Have a look (here)[https://github.com/MattMcFarland/docsense].  Its currently in alpha right now so probably not something you want right away, but thought you should have it on your radar 👍

@MattMcFarland thanks, I'll keep an eye out.
And I'll update the issue once I have a solution.

Alright, I've put together a small plugin, esdoc-named-import-plugin that addresses this issue. It doesn't have any tests or accepts any options at the moment but does the basic transformation from a default import to a named import. If other people find the plugin useful, I might improve it over time. Closing this issue.


No lifecycle_fragment events when using r8

SDK bug (please complete the following information):

OS: android 15, android 10
SDK Version : android-v0.7.0

Describe the bug
If i run the app with isMinifyEnabled = true i don't see any lifecycle_fragment events on the sessions.
If i run the app with isMinifyEnabled = false i see lifecycle_fragment events on the sessions as expected.
To Reproduce
Steps to reproduce the behavior:

Open the android project on Android Studio
Change the valu of isMinifyEnabled to true on the app build.gradle.kts file for release buildType
Run the sample app with measureEnabled
Test the different fragment navigation sections

Expected behavior
The session registered on measure should show  lifecycle_fragment events for the fragments opened.

Thanks for spotting this @jose-a-rodrigues-alb. 🙇
I've raised a PR with the fix.

thank you for your support @abhaysood .
Best regards


Update input parameters accordingly to the newest specification

Update input parameters accordingly to the API updates: https://docs.scrapingant.com/request-response-format
To be added:

wait_for_selector
browser

Closed via #2


fix(guidelines): bring back at-sign for attributes in PDF guidelines

This PR adds a CSS rule to print css to bring back the missing @ sign in front of the attributes mentioned in the text of the PDF guidelines.
Fixes #1227

Looks now like this:


IBM3740 type FM single density profiles

How do I create FM IBM3740 type single density format profiles?
Are the supported formats purely predefined profiles that can be overridden or are they hard coded?
Peter

You can specify a textproto file as a profile name and it'll load that at runtime, allowing customised profiles. The built-in ones are compiled into the binary for convenience. You can see the source for the built-in ones in src/formats.
Do you want to read or write IBM3740 disks? For reading, you could probably just use the generic ibm profile, which will attempt to autodetect the format. It sometimes gets confused and you might need to tell it what the base sector ID is (see the acorndfs format). Writing is harder. Do you have a reference for the disk format I could use?

David,
I would like to do both read and write.
RM 380Z supports both standard 8" IBM3740 single sided disks (26 spt, 128 byte sectors FM, 77 tracks) and 5.25" disks formatted in an IBM 3740 mode (16 spt, 128 byte sectors FM, 40 tracks).
380ZD & 480Z have intelligent controller that also support and IBM 34 disk format. 8" IBM 34 single sided [26 spt, 256 byte sectors MFM, 76 tracks + trk0 which is IBM 3740 FM]. 5.25" IBM 34 single sided based - [9 spt, 512 byte sectors MFM, 39 tracks + trk0 which is in IBM 3740 mode (16 spt, 128 byte sector FM)]
BTW How do I specify 'sequential' vs 'interleaved' file format ie disk side 0 followed by disk side 1 or purely in cylinder order (cyl0, cyl 1 .. cyl n - trk0h0,trk0h1,trk1h0,trk1h1 ...) for .img file format?
A slight further complication is that side 1 sectors are also identified as h0 rather than h1.
Peter

That sounds straightforward. I'll need more data on the format for writing --- in particular, I need to know the size of the gaps between records in the disk.
Regarding the image order: right now the format's hardcoded to CHS, but adding support for HCS ought to be easy. I'll get on to it soon.


Switch testing from nose to pytest

Nose is dead as a doornail - repo hasn't been updated in 5 years. It's time to switch to pytest! 🤩
Luckily, the change is as painless as can be, because the current test suite works out of the box with pytest - I'm already doing that in the conda-forge recipe. 🥳

Thanks! We actually use pytest. Is nose still listed somewhere?

Still shows two hits currently (hence why I assumed it's still in use - glad to hear you switched already!): https://github.com/cvxpy/cvxpy/search?q=nose


Introduce riak_kv_multi_prefix_backend

riak_cs_kv_multi_backend has been separated from riak_kv repo, as it was rather independent and supposed to be only for Riak CS. After a long time, it has been well tested in many production systems, it would be good time to bundle this into KV repository.
Now that backend is reliable enough so that the cost of configuration complexity for this multibackend is now much bigger. So now it is time to bundle in Riak release package.
This pull request copies riak_cs_kv_multi_backend to this repository with its name changed to riak_kv_multi_prefix_backend. This pull request also introduces a new config item to simplify backend configuration for CS without harming current KV clusters. After this pull request, riak.conf to run KV as CS backend will be like this:
storage_backend = prefix_multi
cs_version = 20000

You'll still need add_paths for storage calculation in advanced.config, but no other configuration will required. If you still unlike this, old configurations can be put out to advanced.config, too.

Note: {allow_mult, true} for riak_core is still needed after this pull request.

I'm a bit concerned about the commented out tests, given it looks like we're about to merge a new backend without any coverage.  Is there a reason for the removal of the tests?

@slfritchie Now that Kota's out, can you comment on the included, commented out, tests here?

Hrm, my guess is that those test functions are from the original generic backend test suite + the original multi backend's invocation of them ... and that this is a prerequisite PR for later 2.0-related merge work.  @shino would know better than me about the prerequisites, though.  Shino, your opinion?
Given that this backend is only used by CS, and CS isn't even ready for it quite yet, I'd be OK with making a new ticket to uncomment the tests and get them passing prior to the 2.0 CS release.

@slfritchie it seems ancient history before i know of it, i.e. I have no idea :smile:

OK, well, I'm :+1: to merge, given it's only used by Riak CS.

@borshop merge

:+1: 7270a0e

@borshop merge

Thank you for review and merge! The problem being just only for CS is riak.conf, where cuttlefish automatically shows a choice of prefix_multi in the comment. So I'm +1 to Scott:

Given that this backend is only used by CS, and CS isn't even ready for it quite yet, I'd be OK with making a new ticket to uncomment the tests and get them passing prior to the 2.0 CS release.

But that depends on when this code is shipped. Unlikely to be in 2.0 series... then just old style backend configuration will be used and described in the release doc.


fix: sort images by ids stead of filenames

Problem
When more than 10 articles are added, they are not displayed in order. This is due to the ordering of the files being based on their file names (strings) rather than their ids. As a result, article 10 is displayed before article 2.
Solution
Order the files based on their id's instead of their file names to ensure proper ordering of articles.

Thank you :)


Fix/423 design system update change the fields label

Description
Updated theme package and other style fixes.
Fixes #423
Type of change

[x] New feature (non-breaking change which adds functionality)

How Has This Been Tested?

Checklist

[x] I have read the CONTRIBUTING doc
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[x] Any dependent changes have already been accepted and merged

Further comments

Thanks for the PR!
Any successful deployments (not always required) will be available below.
Backend
Frontend
Oracle-API
Once merged, code will be promoted and handed off to following workflow run.
Main Merge Workflow

Hello, PR #532 should help with the Javascript CI failure.


🔧 fix(menu): Menu Item Filter Improvements

Summary
These issues were first reported by @fuegovic, but the last one seems a general patch

Fixed issue where separators were appearing in the model search (when custom separators are used).
Fixed issue where the placeholder in the plugins drop-down wasn't accurate
Fixed issue where the new plugin search wasn't fully enabled

Change Type
Please delete any irrelevant options.

[x] Bug fix (non-breaking change which fixes an issue)

Testing
Manual testing of the GPT plugins menus
Test Configuration:
Checklist
Please delete any irrelevant options.

[x] My code adheres to this project's style guidelines
[x] I have performed a self-review of my own code
[x] I have commented in any complex areas of my code
[x] My changes do not introduce new warnings
[x] Local unit tests pass with my changes

Thank you @f1yn 🙏


New heavy support weapons

https://helldivers.fandom.com/wiki/MG-206_Heavy_Machine_Gun
https://helldivers.fandom.com/wiki/LAS-99_Quasar_Cannon

Sweet. I haven't played since these were introduced. Seems exciting. o7 Helldiver

Play! Quasar is the new rocket and fun


Image Lightbox Addition

This is the implementation of a lightbox that will now appear when you click on an image preview in the message stream rather than the current default behavior of just opening the image in a new tab.
The lightbox has capability to open in a new tab for those that use the behavior along with a download button.

Automated message from Dropbox CLA bot
@brockwhittaker, it looks like you've already signed the Dropbox CLA. Thanks!

note this addresses #654.

Merged, thanks @brockwhittaker!


support container option

https://github.com/Simonwep/pickr/issues/138
support container option instead of forcing document.body

default option is always {'container': 'body'}
So it automatically works without breaking existing code

Please be sure to build the dist files and update the README if you added any new options :) And thank's for adding it!


Type "byte" is not included in LitePal models

I have a model like this one:
public class Entry extends LitePalSupport {
    private String word;

    private String def;

    private byte proficiency;
    ...
}

But I found that every time I want to save this model, no matter how much I set proficiency to, the next time I check, it's still zero. My guess is that byte is not included when LitePal using reflection. I think, however, it should be included because sometimes I have a lot of instances of this model and using byte rather than int can save some memory.
Will you add byte variables into LitePal models in future versions?

Well, you are right. byte is not included in the supported type in LitePal. It only support int, short, long, float, double, boolean, char, byte array, String and java.util.Date.
Byte might save some memory, but it's not as easy to use as int i guess. Actually memory is not a such big problem, I tried to load 100,00 data from database in one time, and it worked fine even in some old devices.
Still you can try to use short type in your case, it will cost less memory than int, maybe a better choice.


Please Submit This to Lambda-Packages

Hey James!
I saw your link to this project on reddit - looks awesome!
It'd be absolutely awesome if we could have this merged with lambda-packages - there are many Python web apps that use Pillow, so having out-of-the-box support for Pillow on Lambda would be a huge win!
Would you be willing to submit a pull request to lambda-packages? :D

Hi Rich,
Sure thing. I'll split out the Pillow part of it and submit a pull request. I need a few days to have a look at  lamdba-packages so that I can follow your format.
Could you have a look over my build script to confirm that it is similar to the methodology you have used?
I'm also working on SVG (Scalable Vector Graphic) support, along with pyCairo, but have run into a few issues with the build on EC2. I've posted a question on the EC2 forums, which I'm sure no one will ever answer. Any chance you could cast your eye over it?

Awesome!
The build script looks great to me - feel free to include that in the PR! The manifest format is really really simple, it's just a dictionary with the package name, version, and a path to the archive.
Another thing I've noticed is that it often helps to chmod 755 the .so files, but that may or may not be voodoo.
Also, is requests necessary? I think that's pure python, so not necessary to package on EC2, but I could be wrong.
That GTK problem looks like a dooooozy. :( Personally, I'd try building all of GTK from scratch using as few yum-dependencies as possible, but it looks like you've already tried that. I've never had much luck combining Amazon and Red Hat repos for exactly this reason. I wish I could be more helpful, but it looks like you're pretty far down the rabbit hole! Maybe you could try doing the actual build on a Red Hat box and then including everything it would need to run in the Lambda environment? Or maybe look at something like CDE for your builds? Those are probably not smart ideas.

You'll have to bear with me, frankly I'm a Python newbie who has just immigrated from Javascript Land, but it looks pretty straight forward.
I haven't run into any permissions issues as of yet, but I'll add in the chmod for good measure.
I won't include requests, eventlet or simplejson in the env pack, they're not necessary for your project.
I'm probably going to deep six the pygtk plan, I don't think it's worth my sanity! Thanks for having a look though.
In general I'm very interested in Lambda/Python as a scalable image processing platform. If you have any suggestions for other useful image utilities I'd love to hear them.
Check this out. You may want to get in touch with this dude, he seems to be working along the same lines as you.

I think eventlet and simplejson would be very welcome inclusions, as those are quite common packages in the Python world, so having them available in lambda-packages would be useful for everybody!
W/R/T image processing - I was actually able to have a ton of success with using CDE (linked above) on Lambda (got GCC working, woo), so I bet you'd be able to use CDE to get ImageMagick working on Lambda with no problems. ImageMagick can do pretty much everything you'd ever want to with regards to image processing, so I imagine that'd be pretty powerful. Does that make sense?
I've been in touch with Ryan from ServerlessCode.com before - my only qualm about including scikit-learn in lambda-packages is the the resulting archive is ~40M, which is pretty chunky!

OK. That's done, I think...
Could you have a look before I initiate a pull request?
The tar contents:

Is this suitable for your purposes?

fulfilled


Add a new line in the execution.rst file

Description
This PR adds a line to the documentation regarding the CobaltProvider, indicating that it is deprecated and will be removed by 2024.04. This change provides clarity and ensures users are aware of the deprecation timeline.
Changed Behaviour
After this PR, users accessing the documentation will be informed about the deprecation of the CobaltProvider and its planned removal by 2024.04. This may prompt users to migrate to alternative providers.
Fixes
N/A
Type of change
Choose which options apply, and delete the ones which do not apply.

Update to human readable text: Documentation/error messages/comments

@benclifford , I've made the change: separate the branches for the different issues.

Thank you for your review, should I merge it? or only mentors are allowed to?
thanks.

@christailu Once the PR is approved and all the tests are passing, anyone should be able to merge the PR. Sorry about not getting to this one sooner.

But I have trouble merging this one, can i have some help

OK, looks like PR #3145 also added this line to execution.rst and is merged already. So I will close this PR without merging.


Getting 500 Error when Building The App with Nuxt version >=v3.10.0

PS: It's working on development!
Environment

Operating System: Linux
Node Version:     v20.11.1
Nuxt Version:     3.11.2
CLI Version:      3.11.1
Nitro Version:    2.9.6
Package Manager<EMAIL_ADDRESS>Builder:          -
User Config:      devtools, runtimeConfig, modules, colorMode, ui
Runtime Modules<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>Build Modules:    -

Reproduction
https://github.com/medaminefh/E-commerce_nuxt_ts
Describe the bug
The error when I upgraded Nuxt & NuxtUi to the latest versions, the deployed app is crashed

Additional context
No response
Logs
I built it and run it locally with nuxt build && nuxt start
[nuxt] [request error] [unhandled] [500] Cannot find module '/home/medaminefh/Desktop/workspace/github.com/alx-projects/E-commerce_nuxt_ts/.output/server/node_modules/vue/server-renderer/index.mjs' imported from /home/medaminefh/Desktop/workspace/github.com/alx-projects/E-commerce_nuxt_ts/.output/server/chunks/routes/renderer.mjs
  at finalizeResolution (node:internal/modules/esm/resolve:264:11)
  at moduleResolve (node:internal/modules/esm/resolve:917:10)
  at defaultResolve (node:internal/modules/esm/resolve:1130:11)
  at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:396:12)
  at ModuleLoader.resolve (node:internal/modules/esm/loader:365:25)
  at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:240:38)
  at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:85:39)
  at link (node:internal/modules/esm/module_job:84:36)
[nuxt] [request error] [unhandled] [500] Cannot find module '/home/medaminefh/Desktop/workspace/github.com/alx-projects/E-commerce_nuxt_ts/.output/server/node_modules/vue/server-renderer/index.mjs' imported from /home/medaminefh/Desktop/workspace/github.com/alx-projects/E-commerce_nuxt_ts/.output/server/chunks/routes/renderer.mjs
  at finalizeResolution (node:internal/modules/esm/resolve:264:11)
  at moduleResolve (node:internal/modules/esm/resolve:917:10)
  at defaultResolve (node:internal/modules/esm/resolve:1130:11)
  at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:396:12)
  at ModuleLoader.resolve (node:internal/modules/esm/loader:365:25)
  at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:240:38)
  at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:85:39)
  at link (node:internal/modules/esm/module_job:84:36)
[nuxt] [request error] [unhandled] [500] Cannot find module '/home/medaminefh/Desktop/workspace/github.com/alx-projects/E-commerce_nuxt_ts/.output/server/node_modules/vue/server-renderer/index.mjs' imported from /home/medaminefh/Desktop/workspace/github.com/alx-projects/E-commerce_nuxt_ts/.output/server/chunks/routes/renderer.mjs
  at finalizeResolution (node:internal/modules/esm/resolve:264:11)
  at moduleResolve (node:internal/modules/esm/resolve:917:10)
  at defaultResolve (node:internal/modules/esm/resolve:1130:11)
  at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:396:12)
  at ModuleLoader.resolve (node:internal/modules/esm/loader:365:25)
  at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:240:38)
  at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:85:39)
  at link (node:internal/modules/esm/module_job:84:36)

No response

Try upgrading your vue version. -> https://stackblitz.com/edit/github-uwezfu?file=package.json

Thank you so much @warflash 🚀

Try to remove the package-lock.json and node_modules and reinstall

@diffetruction could you create a minimal reproduction

@diffetruction Honestly I faced that issue before and that was due to upgrading some deps versions, maybe if you look closer at the recently upgraded dependencies it might depend on other dependencies.

@diffetruction  I installed Pinia using the Nuxt dev tools and it didn't include the pinia dep in package.json, Hemm weird