feat(modeling): preserve color for offset and extrude

This PR preserves the color attribute when applying operations like offset and extrude and project.
This seems like a clear improvement for users of JSCAD. If you have a 2D object with color like on the left, would you expect extrusion to preserve the color? Or lose it?

preserve-color.js
import * as jscad from '@jscad/modeling'
const { colorize } = jscad.colors
const { extrudeLinear } = jscad.extrusions
const { square } = jscad.primitives
const { translate } = jscad.transforms

export const main = () => {
  const obj2d = [
    colorize([1, 0, 0], square({ center: [0, -4] })),
    colorize([0, 1, 0], square({ center: [0, 0] })),
    colorize([0, 0, 1], square({ center: [0, 4] })),
  ]
  return [
    translate([-4, 0], obj2d),
    translate([4, 0, 0], extrudeLinear({}, obj2d)),
  ]
}

If someone really want no color, it's easy to remove using colorize. But if you want to preserve color of sub-components through an operation... there's really no good way to do it without this change.
All Submissions:

[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 update/change?
[x] Does your submission pass tests?

@z3dev I just pushed some more changes which I hope will address your concerns:

returns new geometries even if the shape is the same
handles empty geometries when it makes sense
added tests for the above
addressed other PR feedback (function and variable names)

Let me know what you think


Duplicate categories?

reopen https://github.com/stanford-crfm/helm/issues/2061 since it is still not resolved...

Closing as won't fix since this addresses an old version of the website that will not be back-patched.
This has been addressed in the React frontend by #2152 and #2166.


[core] Fix React 18.3 warnings about spreading keys in the Material UI Autocomplete component (#42099)

Cherry-pick of https://github.com/mui/material-ui/pull/42099
Helps with https://github.com/mui/material-ui/issues/39833.

Curiosity, when will this be officially released?

Curiosity, when will this be officially released?

Today or tomorrow. See #42441.


fix issues

#30

@MimiYuchenGuo some minor changes
@KimLopezGuell could you please add a test to make sure that the error that you found does not appear again?

@KimLopezGuell  There is a test here for target cohort id but please kindly add here more tests if necessary, many thanks
https://github.com/oxford-pharmacoepi/LargeScaleCharacteristics/blob/54673cb0fe224bbf35014d072cd1e087d47cbe9b/tests/testthat/test-getLargeScaleCharacteristics.R#L414


Can I add crime descriptions to existing police UK data dumps?

Can we add the fine crime descriptions (using utils.populate_offence) to a generic data dump from police UK.

Tested this by loading example Police UK data found in testing data folder as DataFrame.
Dropping NAs was important but function works as expected.
test_frame = pd.read_csv('../crime_sim_toolkit/crime_sim_toolkit/tests/testing_data/test_policedata/2016-07/2016-07-west-yorkshire-street.csv').dropna(subset=['LSOA code'])

utils.populate_offence(test_frame)

This yields expected datatable with crime descriptions added.


Manage other Azure services from Azure WebJob PowerShell script

Hello.
I have no idea if this is the right location for this, but I have been hunting the internet for awhile now, to no avail.
I want to accomplish the following with an Azure WebJob PowerShell script:

Import the Azure PowerShell module

I accomplished this via copying the entire C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement directory to my uploaded .zip file

Import Azure Publish Settings file to load connectivity settings to my Azure Subscriptions

Fails due to cryptographic errors, it seems.

Stop an Azure Cloud Service

Using Stop-AzureService cmdlet

Start an Azure Cloud Service

Using Start-AzureService cmdlet

Are there any useful READMEs that I can go through, or do you guys have any specific direction on how to connect to an Azure Subscription via an Azure WebJob PowerShell script? Or should I post this somewhere else?
Thanks!

Unfortunately, this is not supported today. Recent thread here. Closing here since it is outside of Kudu.
But it is something we do want to try to enable in Azure in the future.

Also, for reference, this had come up in #1589.


Revert "Remove pkg/logs package"

What this PR does / why we need it:
This reverts commit b6f854f849db332e6cac80e513e544e442892101.
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #987
Special notes for your reviewer:
This also intercepts calls to log.Infof etc so they are funnelled through glog.
Release note:
NONE

ref #1044
/retest


GitHub integration

Write a new plugin that creates a pull request for every complete series, and closes it when the series is merged. The plugin could also use the GitHub webhook to mark series as merged/obsolete when a pull request is closed, and to report the state of GitHub checks as a status box.

Out of curiosity: why do we want this?

Mostly to integrate GitHub checks with mailing list workflows, where patch application would be done with GitHub to ensure that checks gate the application. I am not planning to do it immediately, but I am opening the issue as a "reminder that it can be done".

Okay.
We already pushes tags to github so checks can happen there, I'm not sure what more pull requests can provide.
We do want some webhook callback mechanism to get the results, though. For now we'll have to "poll" from the testing script, to get results.

Can you see the results of checks that are run on a tag? Pull requests would provide the UI for checks and for merging, basically.
(Laszlo asked what can be done to integrate GitHub CI with mailing list workflow).

That is a good point. It's not easy afaict.

Also, since Patchew can parse the MAINTAINERS file, it could use that to assign reviewers on GitHub (e.g. M: Paolo Bonzini <https://github.com/bonzini>).


test_write_or_driver_error[DGN] & test_append_or_driver_error[DGN] fail on several architectures

The Debian package build for Fiona 1.8.14 failed on several architectures due to test failures:
i386 (full buildlog)
=================================== FAILURES ===================================
_______________________ test_write_or_driver_error[DGN] ________________________

tmpdir = local('/tmp/pytest-of-buildd/pytest-0/test_write_or_driver_error_DGN0')
driver = 'DGN'
testdata_generator = <function testdata_generator.<locals>._testdata_generator at 0xef24d190>

    @pytest.mark.parametrize('driver', [driver for driver, raw in supported_drivers.items() if 'w' in raw])
    def test_write_or_driver_error(tmpdir, driver, testdata_generator):
        """
            Test if write mode works.

        """

        if driver == "BNA" and GDALVersion.runtime() < GDALVersion(2, 0):
            # BNA driver segfaults with gdal 1.11
            return

        schema, crs, records1, _, test_equal = testdata_generator(driver, range(0, 10), [])
        path = str(tmpdir.join(get_temp_filename(driver)))

        if driver in driver_mode_mingdal['w'] and GDALVersion.runtime() < GDALVersion(
                *driver_mode_mingdal['w'][driver][:2]):

            # Test if DriverError is raised for gdal < driver_mode_mingdal
            with pytest.raises(DriverError):
                with fiona.open(path, 'w',
                                driver=driver,
                                crs=crs,
                                schema=schema) as c:
                    c.writerecords(records1)

        else:

            # Test if we can write
            with fiona.open(path, 'w',
                            driver=driver,
                            crs=crs,
                            schema=schema) as c:

                c.writerecords(records1)

            if driver in {'FileGDB', 'OpenFileGDB'}:
                open_driver = driver
            else:
                open_driver = None
            with fiona.open(path, driver=open_driver) as c:
                assert c.driver == driver
                items = list(c)
                assert len(items) == len(records1)
                for val_in, val_out in zip(records1, items):
>                   assert test_equal(driver, val_in, val_out), "in: {val_in}, out: {val_out}".format(val_in=val_in,
                                                                                val_out=val_out)
E                   AssertionError: in: {'geometry': {'type': 'LineString', 'coordinates': [(0.0, 0.0), (0.0, 0.0)]}, 'properties': {}}, out: {'type': 'Feature', 'id': '12', 'properties': OrderedDict([('Type', 4), ('Level', 0), ('GraphicGroup', 0), ('ColorIndex', 0), ('Weight', 0), ('Style', 0), ('EntityNum', None), ('MSLink', None), ('Text', None)]), 'geometry': {'type': 'LineString', 'coordinates': [(-4.474713932722807e-10, -4.474713932722807e-10), (-4.474713932722807e-10, -4.474713932722807e-10)]}}
E                   assert False
E                    +  where False = <function testdata_generator.<locals>.test_equal at 0xef24d100>('DGN', {'geometry': {'coordinates': [(0.0, 0.0), (0.0, 0.0)], 'type': 'LineString'}, 'properties': {}}, {'geometry': {'coordinates': [(-4.474713932722807e-10, -4.474713932722807e-10), (-4.474713932722807e-10, -4.4747139327...lorIndex', 0), ('Weight', 0), ('Style', 0), ('EntityNum', None), ('MSLink', None), ('Text', None)]), 'type': 'Feature'})

tests/test_drvsupport.py:62: AssertionError

_______________________ test_append_or_driver_error[DGN] _______________________

tmpdir = local('/tmp/pytest-of-buildd/pytest-0/test_append_or_driver_error_DG0')
testdata_generator = <function testdata_generator.<locals>._testdata_generator at 0xeef87b20>
driver = 'DGN'

    @pytest.mark.parametrize('driver', [driver for driver, raw in supported_drivers.items() if 'a' in raw])
    def test_append_or_driver_error(tmpdir, testdata_generator, driver):
        """ Test if driver supports append mode.

        Some driver only allow a specific schema. These drivers can be excluded by adding them to blacklist_append_drivers.

        """

        if driver == "BNA" and GDALVersion.runtime() < GDALVersion(2, 0):
            # BNA driver segfaults with gdal 1.11
            return

        path = str(tmpdir.join(get_temp_filename(driver)))
        schema, crs, records1, records2, test_equal = testdata_generator(driver, range(0, 5), range(5, 10))

        # If driver is not able to write, we cannot test append
        if driver in driver_mode_mingdal['w'] and GDALVersion.runtime() < GDALVersion(
                *driver_mode_mingdal['w'][driver][:2]):
            return

        # Create test file to append to
        with fiona.open(path, 'w',
                        driver=driver,
                        crs=crs,
                        schema=schema) as c:

            c.writerecords(records1)

        if driver in driver_mode_mingdal['a'] and GDALVersion.runtime() < GDALVersion(
                *driver_mode_mingdal['a'][driver][:2]):

            # Test if DriverError is raised for gdal < driver_mode_mingdal
            with pytest.raises(DriverError):
                with fiona.open(path, 'a',
                                driver=driver) as c:
                    c.writerecords(records2)

        else:
            # Test if we can append
            with fiona.open(path, 'a',
                            driver=driver) as c:
                c.writerecords(records2)

            if driver in {'FileGDB', 'OpenFileGDB'}:
                open_driver = driver
            else:
                open_driver = None
            with fiona.open(path, driver=open_driver) as c:
                assert c.driver == driver
                items = list(c)
                assert len(items) == len(records1) + len(records2)
                for val_in, val_out in zip(records1 + records2, items):
>                   assert test_equal(driver, val_in, val_out), "in: {val_in}, out: {val_out}".format(val_in=val_in,
                                                                                val_out=val_out)
E                   AssertionError: in: {'geometry': {'type': 'LineString', 'coordinates': [(0.0, 0.0), (0.0, 0.0)]}, 'properties': {}}, out: {'type': 'Feature', 'id': '12', 'properties': OrderedDict([('Type', 4), ('Level', 0), ('GraphicGroup', 0), ('ColorIndex', 0), ('Weight', 0), ('Style', 0), ('EntityNum', None), ('MSLink', None), ('Text', None)]), 'geometry': {'type': 'LineString', 'coordinates': [(-4.474713932722807e-10, -4.474713932722807e-10), (-4.474713932722807e-10, -4.474713932722807e-10)]}}
E                   assert False
E                    +  where False = <function testdata_generator.<locals>.test_equal at 0xeef87ad8>('DGN', {'geometry': {'coordinates': [(0.0, 0.0), (0.0, 0.0)], 'type': 'LineString'}, 'properties': {}}, {'geometry': {'coordinates': [(-4.474713932722807e-10, -4.474713932722807e-10), (-4.474713932722807e-10, -4.4747139327...lorIndex', 0), ('Weight', 0), ('Style', 0), ('EntityNum', None), ('MSLink', None), ('Text', None)]), 'type': 'Feature'})

tests/test_drvsupport.py:146: AssertionError

arm64 (full buildlog)
=================================== FAILURES ===================================
_______________________ test_write_or_driver_error[DGN] ________________________

tmpdir = local('/tmp/pytest-of-buildd/pytest-0/test_write_or_driver_error_DGN0')
driver = 'DGN'
testdata_generator = <function testdata_generator.<locals>._testdata_generator at 0xffffa32793a0>

    @pytest.mark.parametrize('driver', [driver for driver, raw in supported_drivers.items() if 'w' in raw])
    def test_write_or_driver_error(tmpdir, driver, testdata_generator):
        """
            Test if write mode works.

        """

        if driver == "BNA" and GDALVersion.runtime() < GDALVersion(2, 0):
            # BNA driver segfaults with gdal 1.11
            return

        schema, crs, records1, _, test_equal = testdata_generator(driver, range(0, 10), [])
        path = str(tmpdir.join(get_temp_filename(driver)))

        if driver in driver_mode_mingdal['w'] and GDALVersion.runtime() < GDALVersion(
                *driver_mode_mingdal['w'][driver][:2]):

            # Test if DriverError is raised for gdal < driver_mode_mingdal
            with pytest.raises(DriverError):
                with fiona.open(path, 'w',
                                driver=driver,
                                crs=crs,
                                schema=schema) as c:
                    c.writerecords(records1)

        else:

            # Test if we can write
            with fiona.open(path, 'w',
                            driver=driver,
                            crs=crs,
                            schema=schema) as c:

                c.writerecords(records1)

            if driver in {'FileGDB', 'OpenFileGDB'}:
                open_driver = driver
            else:
                open_driver = None
            with fiona.open(path, driver=open_driver) as c:
                assert c.driver == driver
                items = list(c)
                assert len(items) == len(records1)
                for val_in, val_out in zip(records1, items):
>                   assert test_equal(driver, val_in, val_out), "in: {val_in}, out: {val_out}".format(val_in=val_in,
                                                                                val_out=val_out)
E                   AssertionError: in: {'geometry': {'type': 'LineString', 'coordinates': [(0.0, 0.0), (0.0, 0.0)]}, 'properties': {}}, out: {'type': 'Feature', 'id': '12', 'properties': OrderedDict([('Type', 4), ('Level', 0), ('GraphicGroup', 0), ('ColorIndex', 0), ('Weight', 0), ('Style', 0), ('EntityNum', None), ('MSLink', None), ('Text', None)]), 'geometry': {'type': 'LineString', 'coordinates': [(-4.4703482582342247e-10, -4.4703482582342247e-10), (-4.4703482582342247e-10, -4.4703482582342247e-10)]}}
E                   assert False
E                    +  where False = <function testdata_generator.<locals>.test_equal at 0xffffa3279ee0>('DGN', {'geometry': {'coordinates': [(0.0, 0.0), (0.0, 0.0)], 'type': 'LineString'}, 'properties': {}}, {'geometry': {'coordinates': [(-4.4703482582342247e-10, -4.4703482582342247e-10), (-4.4703482582342247e-10, -4.4703482...lorIndex', 0), ('Weight', 0), ('Style', 0), ('EntityNum', None), ('MSLink', None), ('Text', None)]), 'type': 'Feature'})

tests/test_drvsupport.py:62: AssertionError

_______________________ test_append_or_driver_error[DGN] _______________________

tmpdir = local('/tmp/pytest-of-buildd/pytest-0/test_append_or_driver_error_DG0')
testdata_generator = <function testdata_generator.<locals>._testdata_generator at 0xffffa3279ca0>
driver = 'DGN'

    @pytest.mark.parametrize('driver', [driver for driver, raw in supported_drivers.items() if 'a' in raw])
    def test_append_or_driver_error(tmpdir, testdata_generator, driver):
        """ Test if driver supports append mode.

        Some driver only allow a specific schema. These drivers can be excluded by adding them to blacklist_append_drivers.

        """

        if driver == "BNA" and GDALVersion.runtime() < GDALVersion(2, 0):
            # BNA driver segfaults with gdal 1.11
            return

        path = str(tmpdir.join(get_temp_filename(driver)))
        schema, crs, records1, records2, test_equal = testdata_generator(driver, range(0, 5), range(5, 10))

        # If driver is not able to write, we cannot test append
        if driver in driver_mode_mingdal['w'] and GDALVersion.runtime() < GDALVersion(
                *driver_mode_mingdal['w'][driver][:2]):
            return

        # Create test file to append to
        with fiona.open(path, 'w',
                        driver=driver,
                        crs=crs,
                        schema=schema) as c:

            c.writerecords(records1)

        if driver in driver_mode_mingdal['a'] and GDALVersion.runtime() < GDALVersion(
                *driver_mode_mingdal['a'][driver][:2]):

            # Test if DriverError is raised for gdal < driver_mode_mingdal
            with pytest.raises(DriverError):
                with fiona.open(path, 'a',
                                driver=driver) as c:
                    c.writerecords(records2)

        else:
            # Test if we can append
            with fiona.open(path, 'a',
                            driver=driver) as c:
                c.writerecords(records2)

            if driver in {'FileGDB', 'OpenFileGDB'}:
                open_driver = driver
            else:
                open_driver = None
            with fiona.open(path, driver=open_driver) as c:
                assert c.driver == driver
                items = list(c)
                assert len(items) == len(records1) + len(records2)
                for val_in, val_out in zip(records1 + records2, items):
>                   assert test_equal(driver, val_in, val_out), "in: {val_in}, out: {val_out}".format(val_in=val_in,
                                                                                val_out=val_out)
E                   AssertionError: in: {'geometry': {'type': 'LineString', 'coordinates': [(0.0, 0.0), (0.0, 0.0)]}, 'properties': {}}, out: {'type': 'Feature', 'id': '12', 'properties': OrderedDict([('Type', 4), ('Level', 0), ('GraphicGroup', 0), ('ColorIndex', 0), ('Weight', 0), ('Style', 0), ('EntityNum', None), ('MSLink', None), ('Text', None)]), 'geometry': {'type': 'LineString', 'coordinates': [(-4.4703482582342247e-10, -4.4703482582342247e-10), (-4.4703482582342247e-10, -4.4703482582342247e-10)]}}
E                   assert False
E                    +  where False = <function testdata_generator.<locals>.test_equal at 0xffffa3279b80>('DGN', {'geometry': {'coordinates': [(0.0, 0.0), (0.0, 0.0)], 'type': 'LineString'}, 'properties': {}}, {'geometry': {'coordinates': [(-4.4703482582342247e-10, -4.4703482582342247e-10), (-4.4703482582342247e-10, -4.4703482...lorIndex', 0), ('Weight', 0), ('Style', 0), ('EntityNum', None), ('MSLink', None), ('Text', None)]), 'type': 'Feature'})

tests/test_drvsupport.py:146: AssertionError

ppc64el (full buildlog)
=================================== FAILURES ===================================
_______________________ test_write_or_driver_error[DGN] ________________________

tmpdir = local('/tmp/pytest-of-buildd/pytest-0/test_write_or_driver_error_DGN0')
driver = 'DGN'
testdata_generator = <function testdata_generator.<locals>._testdata_generator at 0x7fff786c53a0>

    @pytest.mark.parametrize('driver', [driver for driver, raw in supported_drivers.items() if 'w' in raw])
    def test_write_or_driver_error(tmpdir, driver, testdata_generator):
        """
            Test if write mode works.

        """

        if driver == "BNA" and GDALVersion.runtime() < GDALVersion(2, 0):
            # BNA driver segfaults with gdal 1.11
            return

        schema, crs, records1, _, test_equal = testdata_generator(driver, range(0, 10), [])
        path = str(tmpdir.join(get_temp_filename(driver)))

        if driver in driver_mode_mingdal['w'] and GDALVersion.runtime() < GDALVersion(
                *driver_mode_mingdal['w'][driver][:2]):

            # Test if DriverError is raised for gdal < driver_mode_mingdal
            with pytest.raises(DriverError):
                with fiona.open(path, 'w',
                                driver=driver,
                                crs=crs,
                                schema=schema) as c:
                    c.writerecords(records1)

        else:

            # Test if we can write
            with fiona.open(path, 'w',
                            driver=driver,
                            crs=crs,
                            schema=schema) as c:

                c.writerecords(records1)

            if driver in {'FileGDB', 'OpenFileGDB'}:
                open_driver = driver
            else:
                open_driver = None
            with fiona.open(path, driver=open_driver) as c:
                assert c.driver == driver
                items = list(c)
                assert len(items) == len(records1)
                for val_in, val_out in zip(records1, items):
>                   assert test_equal(driver, val_in, val_out), "in: {val_in}, out: {val_out}".format(val_in=val_in,
                                                                                val_out=val_out)
E                   AssertionError: in: {'geometry': {'type': 'LineString', 'coordinates': [(0.0, 0.0), (0.0, 0.0)]}, 'properties': {}}, out: {'type': 'Feature', 'id': '12', 'properties': OrderedDict([('Type', 4), ('Level', 0), ('GraphicGroup', 0), ('ColorIndex', 0), ('Weight', 0), ('Style', 0), ('EntityNum', None), ('MSLink', None), ('Text', None)]), 'geometry': {'type': 'LineString', 'coordinates': [(-4.4703482582342247e-10, -4.4703482582342247e-10), (-4.4703482582342247e-10, -4.4703482582342247e-10)]}}
E                   assert False
E                    +  where False = <function testdata_generator.<locals>.test_equal at 0x7fff786c5ee0>('DGN', {'geometry': {'coordinates': [(0.0, 0.0), (0.0, 0.0)], 'type': 'LineString'}, 'properties': {}}, {'geometry': {'coordinates': [(-4.4703482582342247e-10, -4.4703482582342247e-10), (-4.4703482582342247e-10, -4.4703482...lorIndex', 0), ('Weight', 0), ('Style', 0), ('EntityNum', None), ('MSLink', None), ('Text', None)]), 'type': 'Feature'})

tests/test_drvsupport.py:62: AssertionError
------------------------------ Captured log call -------------------------------

_______________________ test_append_or_driver_error[DGN] _______________________

tmpdir = local('/tmp/pytest-of-buildd/pytest-0/test_append_or_driver_error_DG0')
testdata_generator = <function testdata_generator.<locals>._testdata_generator at 0x7fff786c5ca0>
driver = 'DGN'

    @pytest.mark.parametrize('driver', [driver for driver, raw in supported_drivers.items() if 'a' in raw])
    def test_append_or_driver_error(tmpdir, testdata_generator, driver):
        """ Test if driver supports append mode.

        Some driver only allow a specific schema. These drivers can be excluded by adding them to blacklist_append_drivers.

        """

        if driver == "BNA" and GDALVersion.runtime() < GDALVersion(2, 0):
            # BNA driver segfaults with gdal 1.11
            return

        path = str(tmpdir.join(get_temp_filename(driver)))
        schema, crs, records1, records2, test_equal = testdata_generator(driver, range(0, 5), range(5, 10))

        # If driver is not able to write, we cannot test append
        if driver in driver_mode_mingdal['w'] and GDALVersion.runtime() < GDALVersion(
                *driver_mode_mingdal['w'][driver][:2]):
            return

        # Create test file to append to
        with fiona.open(path, 'w',
                        driver=driver,
                        crs=crs,
                        schema=schema) as c:

            c.writerecords(records1)

        if driver in driver_mode_mingdal['a'] and GDALVersion.runtime() < GDALVersion(
                *driver_mode_mingdal['a'][driver][:2]):

            # Test if DriverError is raised for gdal < driver_mode_mingdal
            with pytest.raises(DriverError):
                with fiona.open(path, 'a',
                                driver=driver) as c:
                    c.writerecords(records2)

        else:
            # Test if we can append
            with fiona.open(path, 'a',
                            driver=driver) as c:
                c.writerecords(records2)

            if driver in {'FileGDB', 'OpenFileGDB'}:
                open_driver = driver
            else:
                open_driver = None
            with fiona.open(path, driver=open_driver) as c:
                assert c.driver == driver
                items = list(c)
                assert len(items) == len(records1) + len(records2)
                for val_in, val_out in zip(records1 + records2, items):
>                   assert test_equal(driver, val_in, val_out), "in: {val_in}, out: {val_out}".format(val_in=val_in,
                                                                                val_out=val_out)
E                   AssertionError: in: {'geometry': {'type': 'LineString', 'coordinates': [(0.0, 0.0), (0.0, 0.0)]}, 'properties': {}}, out: {'type': 'Feature', 'id': '12', 'properties': OrderedDict([('Type', 4), ('Level', 0), ('GraphicGroup', 0), ('ColorIndex', 0), ('Weight', 0), ('Style', 0), ('EntityNum', None), ('MSLink', None), ('Text', None)]), 'geometry': {'type': 'LineString', 'coordinates': [(-4.4703482582342247e-10, -4.4703482582342247e-10), (-4.4703482582342247e-10, -4.4703482582342247e-10)]}}
E                   assert False
E                    +  where False = <function testdata_generator.<locals>.test_equal at 0x7fff786c5b80>('DGN', {'geometry': {'coordinates': [(0.0, 0.0), (0.0, 0.0)], 'type': 'LineString'}, 'properties': {}}, {'geometry': {'coordinates': [(-4.4703482582342247e-10, -4.4703482582342247e-10), (-4.4703482582342247e-10, -4.4703482...lorIndex', 0), ('Weight', 0), ('Style', 0), ('EntityNum', None), ('MSLink', None), ('Text', None)]), 'type': 'Feature'})

tests/test_drvsupport.py:146: AssertionError

s390x (full buildlog)
=================================== FAILURES ===================================
_______________________ test_write_or_driver_error[DGN] ________________________

tmpdir = local('/tmp/pytest-of-buildd/pytest-0/test_write_or_driver_error_DGN0')
driver = 'DGN'
testdata_generator = <function testdata_generator.<locals>._testdata_generator at 0x3ff99440670>

    @pytest.mark.parametrize('driver', [driver for driver, raw in supported_drivers.items() if 'w' in raw])
    def test_write_or_driver_error(tmpdir, driver, testdata_generator):
        """
            Test if write mode works.

        """

        if driver == "BNA" and GDALVersion.runtime() < GDALVersion(2, 0):
            # BNA driver segfaults with gdal 1.11
            return

        schema, crs, records1, _, test_equal = testdata_generator(driver, range(0, 10), [])
        path = str(tmpdir.join(get_temp_filename(driver)))

        if driver in driver_mode_mingdal['w'] and GDALVersion.runtime() < GDALVersion(
                *driver_mode_mingdal['w'][driver][:2]):

            # Test if DriverError is raised for gdal < driver_mode_mingdal
            with pytest.raises(DriverError):
                with fiona.open(path, 'w',
                                driver=driver,
                                crs=crs,
                                schema=schema) as c:
                    c.writerecords(records1)

        else:

            # Test if we can write
            with fiona.open(path, 'w',
                            driver=driver,
                            crs=crs,
                            schema=schema) as c:

                c.writerecords(records1)

            if driver in {'FileGDB', 'OpenFileGDB'}:
                open_driver = driver
            else:
                open_driver = None
            with fiona.open(path, driver=open_driver) as c:
                assert c.driver == driver
                items = list(c)
                assert len(items) == len(records1)
                for val_in, val_out in zip(records1, items):
>                   assert test_equal(driver, val_in, val_out), "in: {val_in}, out: {val_out}".format(val_in=val_in,
                                                                                val_out=val_out)
E                   AssertionError: in: {'geometry': {'type': 'LineString', 'coordinates': [(0.0, 0.0), (0.0, 0.0)]}, 'properties': {}}, out: {'type': 'Feature', 'id': '12', 'properties': OrderedDict([('Type', 4), ('Level', 0), ('GraphicGroup', 0), ('ColorIndex', 0), ('Weight', 0), ('Style', 0), ('EntityNum', None), ('MSLink', None), ('Text', None)]), 'geometry': {'type': 'LineString', 'coordinates': [(-4.4703482582342247e-10, -4.4703482582342247e-10), (-4.4703482582342247e-10, -4.4703482582342247e-10)]}}
E                   assert False
E                    +  where False = <function testdata_generator.<locals>.test_equal at 0x3ff994403a0>('DGN', {'geometry': {'coordinates': [(0.0, 0.0), (0.0, 0.0)], 'type': 'LineString'}, 'properties': {}}, {'geometry': {'coordinates': [(-4.4703482582342247e-10, -4.4703482582342247e-10), (-4.4703482582342247e-10, -4.4703482...lorIndex', 0), ('Weight', 0), ('Style', 0), ('EntityNum', None), ('MSLink', None), ('Text', None)]), 'type': 'Feature'})

tests/test_drvsupport.py:62: AssertionError

_______________________ test_append_or_driver_error[DGN] _______________________

tmpdir = local('/tmp/pytest-of-buildd/pytest-0/test_append_or_driver_error_DG0')
testdata_generator = <function testdata_generator.<locals>._testdata_generator at 0x3ff96fdf040>
driver = 'DGN'

    @pytest.mark.parametrize('driver', [driver for driver, raw in supported_drivers.items() if 'a' in raw])
    def test_append_or_driver_error(tmpdir, testdata_generator, driver):
        """ Test if driver supports append mode.

        Some driver only allow a specific schema. These drivers can be excluded by adding them to blacklist_append_drivers.

        """

        if driver == "BNA" and GDALVersion.runtime() < GDALVersion(2, 0):
            # BNA driver segfaults with gdal 1.11
            return

        path = str(tmpdir.join(get_temp_filename(driver)))
        schema, crs, records1, records2, test_equal = testdata_generator(driver, range(0, 5), range(5, 10))

        # If driver is not able to write, we cannot test append
        if driver in driver_mode_mingdal['w'] and GDALVersion.runtime() < GDALVersion(
                *driver_mode_mingdal['w'][driver][:2]):
            return

        # Create test file to append to
        with fiona.open(path, 'w',
                        driver=driver,
                        crs=crs,
                        schema=schema) as c:

            c.writerecords(records1)

        if driver in driver_mode_mingdal['a'] and GDALVersion.runtime() < GDALVersion(
                *driver_mode_mingdal['a'][driver][:2]):

            # Test if DriverError is raised for gdal < driver_mode_mingdal
            with pytest.raises(DriverError):
                with fiona.open(path, 'a',
                                driver=driver) as c:
                    c.writerecords(records2)

        else:
            # Test if we can append
            with fiona.open(path, 'a',
                            driver=driver) as c:
                c.writerecords(records2)

            if driver in {'FileGDB', 'OpenFileGDB'}:
                open_driver = driver
            else:
                open_driver = None
            with fiona.open(path, driver=open_driver) as c:
                assert c.driver == driver
                items = list(c)
                assert len(items) == len(records1) + len(records2)
                for val_in, val_out in zip(records1 + records2, items):
>                   assert test_equal(driver, val_in, val_out), "in: {val_in}, out: {val_out}".format(val_in=val_in,
                                                                                val_out=val_out)
E                   AssertionError: in: {'geometry': {'type': 'LineString', 'coordinates': [(0.0, 0.0), (0.0, 0.0)]}, 'properties': {}}, out: {'type': 'Feature', 'id': '12', 'properties': OrderedDict([('Type', 4), ('Level', 0), ('GraphicGroup', 0), ('ColorIndex', 0), ('Weight', 0), ('Style', 0), ('EntityNum', None), ('MSLink', None), ('Text', None)]), 'geometry': {'type': 'LineString', 'coordinates': [(-4.4703482582342247e-10, -4.4703482582342247e-10), (-4.4703482582342247e-10, -4.4703482582342247e-10)]}}
E                   assert False
E                    +  where False = <function testdata_generator.<locals>.test_equal at 0x3ff99440700>('DGN', {'geometry': {'coordinates': [(0.0, 0.0), (0.0, 0.0)], 'type': 'LineString'}, 'properties': {}}, {'geometry': {'coordinates': [(-4.4703482582342247e-10, -4.4703482582342247e-10), (-4.4703482582342247e-10, -4.4703482...lorIndex', 0), ('Weight', 0), ('Style', 0), ('EntityNum', None), ('MSLink', None), ('Text', None)]), 'type': 'Feature'})

tests/test_drvsupport.py:146: AssertionError

@sebastic Thanks for reporting this. These tests check if something is written, the same data is read back. The DGN driver on these architectures seems to behave differently regarding floating points. The tests need to be adapted to account for that.
Written:  'coordinates': [(0.0, 0.0), (0.0, 0.0)]
Read back: 'coordinates': [(-4.4703482582342247e-10, -4.4703482582342247e-10), (-4.4703482582342247e-10, -4.4703482582342247e-10)]

Also failing Fedora builds similarly.


Add stats command

Like achievements, but for stats display.
Useful for people who leave the mouse cursor hovering the battery =)

Will be added on v0.34. 👍


Package both lambdas with standard manes

Create zip files following correct naming convention
Remove .env file from prod builds as it shouldn't be there
Fix and references to wrong aws region
Ticket !BL-11962

Renamed branch inline with other repos. See PR #2


user name KM2

If I login locally on my KM2 device i only can fill in the password. what do i have to use as a username in the config .yaml file?

See: https://github.com/dm82m/hass-Deltasol-KM2/issues/18


Error frame confusion

It looks like when an error frame is received, it is always handled by the connect error callback.
For example:

CONNECT -- server returns success
SUBSCRIBE -- server returns error response e.g. permission denied
client calls CONNECT error callback

This is pretty confusing and hard to program against -- one would expect some sort of error callback related to the SUBSCRIBE for step 2 and 3.

I do agree. I forked previous stomp lib with all pending PR +  re-write it in es6 with no major evolution to not break the API a lot. Now I would like to launch a future major release with a lot of enhancement + some test sbut I really need some free time to do it or some PRs to help me.

Actually, I think it is expected behavior. Because STOMP doesn't declare how to handle ERROR frames, and that's why src/client.js:136 allow a user to decide how to handle it properly. I agree that errorCallback is a bit confusing name, but I can't imagine better.

I agree that errorCallback is a bit confusing name, but I can't imagine better.

What's confusing is not the name of the callback, but where it is passed in. It is passed in to the connect method, but is also called in other operations like subscribe.
If there is no way for the client to distinguish between a connect and a subscribe error, then the error callback should be configured at the client level (i.e. before calling connect), not at the connect level.

@rocketraman There is no way to distinguish ERROR frames. I think it's good idea to have 1 global errorHandler per Client instance.


[FLINK-33993] Fix misleading events for scaling effectiveness detection

When the ineffective scaling decision feature is turned off, events are regenerated which look like this:
Skipping further scale up after ineffective previous scale up for 65c763af14a952c064c400d516c25529

This is misleading because no action will be taken. It is fair to inform users about ineffective scale up even when the feature is disabled but a different message should be printed to convey that no action will be taken.

Thanks for the quick review Rui!


feat(op): add support for client credentials

required for https://github.com/zitadel/zitadel/issues/4211


Fixes #3313 Allow passing a ClassLoader to ResourceService and Webjar…

…Service

@rossabaker did you get a chance to review the PR?

Sorry, one more thing.  Code looks ready, but I hadn't noticed the docs don't compile.  ++2.12.11 docs/tutOnly static.md should reveal what needs to be done.

@rossabaker I made the changes to static.md  and pushed it. But CI/Scala 2.13.1 is failing because of SSL Handshake exception

This had some fallout from the Uri.Path while we were awaiting the second review. I tried to take care of the conflicts, which were non-trivial, so please check my work.

@rossabaker I took a look at changes pertaining to Uri.Path. LGTM.


belongs_to fk_id doesn't match has_one fk_id

The format for struct tag values used to designate an alternative foreign key are different in a has_one relationship vs a belongs_to relationship.

In a has_one, the fk_id struct tag references the value of the db struct tag on the struct field that holds the foreign key value. So if the foreign key struct field's struct tag is db:"creator_id", the struct tag for specifying a nonstandard foreign key will be like fk_id: "creator_id"
In a belongs_to, the fk_id struct tag references the stringified name of the struct field. I.e. if the struct field name is CreatorID, the struct tag is like fk_id:"CreatorID" (implemented in this PR)

IMO, the belongs_to behavior is not intuitive. I'm curious why this decision was made and if indeed there's just no way to have the two behaviors match for some reason.
cc @u007

sorry my bad, i will make it same as has_one

@markbates ive concern regards to fk_id using actual field name because if we use that, we may not be able to point it back to the field of the current class.
if we tried to get the field name by camel case the field name, it might not turn out to be the actual field.
if we use fk_id and point to field name, we can then obtain the actual field name via tag: db
what do you think? shall we remain this key to be class field name and change has_one to use the same?

@u007 I’m probably the wrong person to weigh in here since I’m a) traveling and b) don’t quite understand the problem. :)
@stanislas-m and @larrymjordan could either of you jump in on this?

okay the problem is, has_one fk_id is using actual table field name, while belongs_to fk_id is using class attribute name, i was thinking to standardise this, but i cannot change fk_id for belongs_to to use table field name

I should clarify a bit: I'm just hoping for consistency. Whether it's named for the db column or the struct field is an implementation detail from my POV. I'd personally be in favor of whatever makes Pop work better internally, but I do feel strongly that having these behaviors match honors the principle of least surprise.

we can only find ways to turn has_one to use attribute name as well, but this may break existing functionality

Why do we need to access the field in belongs_to but not in has_one?
If it's required, I'm not against refactoring fk_id to use the field instead. To ensure back-compatibility, we can try to get the field first, then fallback with a warning on the db column.

This is still quite confusing and not very well documented. Is a fix for this to be anticipated (seeing that the issue is over a year old)? I think the behavior should be consistent. I have to constantly look up this issue to figure out which way is which.


⚠ Samsung has degraded performance

In 2ea76e2, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2638 ms

Resolved: Samsung performance has improved in c3b5dee.


don't know how to turn this value into a node

报错
$ vant-cli test
FAIL  src/my-button/test/index.spec.js
● Test suite failed to run
D:\demo\components-vue\src\my-button\index.vue: don't know how to turn this value into a node
环境
win7 nodeV12.16.3 npmV6.13.4  sass

问题与本仓库无关，建议自行搜索问题原因


fcgiwrap fails to build

Issue description
When building fcgiwrap derivation, the following error is raised at configure step:
configure: error: systemd support requested but libraries not found

There was no recent change on fcgiwrap. Systemd is correctly listed as a dependency.
Useful link: https://github.com/gnosek/fcgiwrap/blob/master/configure.ac
Steps to reproduce
Build the fcgiwrap derivation.
Technical details

System: NixOS: channel nixos-unstable
Nix version: nix-env (Nix) 1.10
Nixpkgs version: local clone of nixpkgs pointing to nixos-unstable

Similar problem as with https://github.com/NixOS/nixpkgs/commit/f0de1c75b5241544eb80e05a0ed60acc6a1e27f8 apparently, need to use libsystemd instead of libsystemd-daemon.
I'm coming with a patch.


executer/common_bsd.h: increase the number of tap/tun devices for NetBSD

Before sending a pull request, please review Contribution Guidelines:
https://github.com/google/syzkaller/blob/master/docs/contributing.md

Codecov Report

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

@@           Coverage Diff           @@
##           master    #1313   +/-   ##
=======================================
  Coverage   57.66%   57.66%
=======================================
  Files         131      131
  Lines       24661    24661
=======================================
  Hits        14221    14221
  Misses       9765     9765
  Partials      675      675

Continue to review full report at Codecov.

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


"Url has changed" On all nodes each time I save and publish the home node

Describe the bug
Using version: 12.0.0
Using Umbraco version 12.2.0
Creating an entry "Url has changed" for all the nodes and descendants each time I save and publish the home node.
Ending with a huge number of records.
To Reproduce
Steps to reproduce the behavior:

Go to 'save and  publish' Home node or any parent nodes
Go to UrlTracker and eache time you save the home page it's adding an entry "Url has changed" and remove the domain from the url
I tried with no culture setup, with culture, with and without a domain but it's the same result
See error

Expected behavior
It shouldn't create records as nothin was changed.
A work around is to disable notifications and enable the default Umbraco Url redirect management
"Backoffice": {
"Notifications":{
"Enable": false
}
},

Hi @mrflo ! Thank you very much for reaching out! I'm going to try out your reproduction steps and see if I can reproduce the issue.
I have a few questions though:
Do these steps describe the process on a clean install?
Do you have any special properties set up on your home node, like an internal redirect, a url alias or a url name?

Hi, thanks for your quick answer @D-Inventor
It's not a clean install in fact it's a migrated one from V7 but there is no specific properties except an empty umbracoUrlName. Also we don't have domain on descendants nodes.
I discovered this issue because Url tracker was giving a SQL error " String or binary data would be truncated" without naming the table name or knowing at first it was coming from url tracker. We have some sub-node generated by user that have long page name. I'm wondering if the length of 255 for url's is big enough (I fixed it by switching those to 400 but was obviously still very slow because it was creating a record for each descendants, had 300k + useless entries) but that's another subject.
Also something to note: I though installing UrlTracker was automatically shutting down the default Umbraco Url redirect management. It's not the case anymore it seems

Good news: I have been able to reproduce this issue and I've identified at least one possible cause:
On this line in the code, the check for equality on the Umbraco url name fails, because one returns null while the other returns an empty string.
Screenshot of debugger for evidence:

As this comparison fails, the URL Tracker assumes that the URL has changed and inserts redirects for the content type and all it's descendants. I'm going to see if there is a straightforward solution to this issue and come back when I have an update.

Regarding your closing comment: I've considered that feature and I personally did not find it compelling. I figured as a consumer, you should be able to decide for yourself which features you want to use and which you don't, so instead I allow you to disable the notification handling of the URL Tracker if you prefer the Umbraco redirect manager and you're always free to disable the redirect manager of Umbraco if you prefer to have all your redirects inside the URL Tracker. Both work, so the choice is yours. You could even keep both if you want.

Thanks for finding the cause of the error quickly and glad it's not a config error or other things.
Also please consider making the url fields bigger if you have the time or nice error with the url name if it failded to create the redirect that can surly help because the error receive by the umbraco backoffice was really not clear. I had to play with turning plugins on/off to find where it was coming from.
Thanks again

I understand, it's not helpful to get a generic database error without clear indication what exactly went wrong. I'll see what I can do.

woops, I didn't realize that the issue would immediately close when I push a commit that references this issue

@mrflo I just pushed a new package version to NuGet: 10.3.1-beta.1. This package should contain the fix for your issue. Would you like to give it a try and see if this fixes your issue?

Hi @D-Inventor I've just installed it and tested it and it works well now. Thanks!
I've also tested to rename the home now and got the much nicer field errors:


Declare text_chars before assignment

Hey @dcollien,
We've recently switched from Browserify to Webpack and encountered a problem with the bundle.
I've noticed that one of your variables is being used without being declared and our current build tools did not expect to encounter it.
Could you have a look if you are fine with the changes? Looks like it was not there by accident but I might be wrong.

Closing because of the lack of interest

Missed this entirely, apols. - updated the repo

No worries! I just thought that you do not maintain this repository anymore.
Thank you very much! Have a great weekend.


TensorFlow is failing on ci.bazel.io with Bazel@HEAD

http://ci.bazel.io/job/TensorFlow/BAZEL_VERSION=HEAD,PLATFORM_NAME=linux-x86_64/870/console
==== bazel version ====
...........
Build label:
Build target: bazel-out/local-fastbuild/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Thu Jun 8 20:25:30 2017<PHONE_NUMBER>)
Build timestamp:<PHONE_NUMBER>
Build timestamp as int:<PHONE_NUMBER>

+ ./tensorflow/tools/ci_build/builds/configured CPU
~/workspace/TensorFlow/BAZEL_VERSION/HEAD/PLATFORM_NAME/linux-x86_64 ~/workspace/TensorFlow/BAZEL_VERSION/HEAD/PLATFORM_NAME/linux-x86_64
You have bazel  installed.
Please upgrade your bazel installation to version 0.4.5 or higher to build TensorFlow!
Exiting...

The reason is Bazel@HEAD doesn't generate a version number, the new way of version check introduced in 88d648f3beedfa6123efabb756be372f69382983 fails.
Maybe skip the check if the version number is empty? Because this also means users cannot use their custom bazel to build TF unless they add --embed_label ${version_number} as a build option.

@martinwicke Can you take a look?

I am OK with having the version check succeed if the version string returned is empty

Agreed. @meteorcloudy do you want to fix the configure script, or @yifeif are you going to do it as part of pythonification?

yea, but will send a fix for this now to unblock.

Thanks for the fix!


feat: execution workflow QAPA

Fixes #28
Checklist

[x] I have performed a self-review of my own code
[x] My code follows the templates/style guidelines of the repository
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have tested my code

I am not sure whether I should include the differential expression analysis table as the QAPA paper used DESeq2 for differential expression analysis.

Sorry for the double comments 🙈

By scanning the QAPA paper, I think their ∆PPAU measure is the differential usage?
@yuukiiwa did you have this output (.tsv or so) in the workflow?

@all-contributors please add @yuukiiwa for code


Does --find-links <local-path> --offline allow packages to be used?

Does uv pull packages from e.g. a --find-links .../site-packages when --offline is used? I don't think so, I think it only reads from the cache — but it should allow loading from local paths right?

I think it should allow that. Does it not?

I think it does
❯ uv pip install --no-index --find-links ~/workspace/packse/vendor/build --force-reinstall wheel --offline --no-cache
Resolved 1 package in 8ms
Downloaded 1 package in 5ms
Installed 1 package in 5ms
 - wheel==0.42.0
 + wheel==0.42.0

I think I got confused because I thought --find-links would find unpackaged distributions in site-packages.


状态刷新失败

024-06-28 10:44:59  [INFO    ] ---- 程序开始，当前仓库版本为1.4.1，仓库地址为https://github.com/ARC-MX/sgcc_electricity_new.git
2024-06-28 10:44:59  [INFO    ] ---- chromium-driver version is 120

...

2024-06-28 10:46:53  [INFO    ] ---- 将获取2户数据，user_id: ['<user_id_1>', '<user_id_2>']
...
2024-06-28 10:48:08  [INFO    ] ---- Get month power charge for <user_id_1> successfully, 2024-03-01-2024-03-31 usage is 58 KWh, charge is 24.89 CNY.
2024-06-28 10:48:08  [INFO    ] ---- Get month power charge for <user_id_1> successfully, 2024-04-01-2024-04-30 usage is 55 KWh, charge is 23.77 CNY.
2024-06-28 10:48:08  [INFO    ] ---- Get month power charge for <user_id_1> successfully, 2024-05-01-2024-05-31 usage is 54 KWh, charge is 23.47 CNY.

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id='pane-second']/div[1]/div/label[2]/span[1]"}
  (Session info: chrome=120.0.6099.224)
Stacktrace:
#0 0x55e55c864233 <unknown>
#1 0x55e55c52e0fe <unknown>
#2 0x55e55c577ba6 <unknown>
#3 0x55e55c577cc1 <unknown>
#4 0x55e55c5c5204 <unknown>
#5 0x55e55c5a544d <unknown>
#6 0x55e55c5c2680 <unknown>
#7 0x55e55c5a51a3 <unknown>
#8 0x55e55c56a13e <unknown>
#9 0x55e55c56b712 <unknown>
#10 0x55e55c839534 <unknown>
#11 0x55e55c83c759 <unknown>
#12 0x55e55c83c238 <unknown>
#13 0x55e55c83cc05 <unknown>
#14 0x55e55c82babf <unknown>
#15 0x55e55c83cf8e <unknown>
#16 0x55e55c815c86 <unknown>
#17 0x55e55c8553e5 <unknown>
#18 0x55e55c8555cb <unknown>
#19 0x55e55c8637bf <unknown>
#20 0x7f212ddccea7 start_thread

#3 0x55e55c577cc1 <unknown>
#4 0x55e55c5c5204 <unknown>
#5 0x55e55c5a544d <unknown>
#6 0x55e55c5c2680 <unknown>
#7 0x55e55c5a51a3 <unknown>
#8 0x55e55c56a13e <unknown>
#9 0x55e55c56b712 <unknown>
#10 0x55e55c839534 <unknown>
#11 0x55e55c83c759 <unknown>
#12 0x55e55c83c238 <unknown>
#13 0x55e55c83cc05 <unknown>
#14 0x55e55c82babf <unknown>
#15 0x55e55c83cf8e <unknown>
#16 0x55e55c815c86 <unknown>
#17 0x55e55c8553e5 <unknown>
#18 0x55e55c8555cb <unknown>
#19 0x55e55c8637bf <unknown>
#20 0x7f212ddccea7 start_thread
. 5 retry times left.
2024-06-28 10:49:18  [ERROR   ] ---- state-refresh task failed, reason is cannot unpack non-iterable NoneType object
Traceback (most recent call last):
  File "/app/main.py", line 57, in run_task
    user_id_list, balance_list, last_daily_date_list, last_daily_usage_list, yearly_charge_list, yearly_usage_list, month_list, month_usage_list, month_charge_list = data_fetcher.fetch()
TypeError: cannot unpack non-iterable NoneType object
^CTraceback (most recent call last):
  File "/app/main.py", line 90, in <module>
    main()
  File "/app/main.py", line 52, in main
    time.sleep(1)

多用户吗？我这没有多用户的环境，没法调试多用户是否有bug。要不你先删掉一个用户试试

多用户吗？我这没有多用户的环境，没法调试多用户的情况。从代码看多用户显然是有Bug的，这是老仓库遗留下来的问题。要不你先删掉一个用户试试，等我闲了我再更新吧，最近比较忙。

我看了下国网页面，跟多用户无关。页面没有“近30天”的选项，

所以报错Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id='pane-second']/div[1]/div/label[2]/span[1]"}
跟 issue #11  是一个问题

这不是提示，请前往国网APP开通智能交费签约即可查看近30天日电量

本来想用try...except把下句包住试试，
# 30天用电量的数据
days_element = driver.find_elements(By.XPATH,
    "//*[@id='pane-second']/div[2]/div[2]/div[1]/div[3]/table/tbody/tr")  # 30天的值 列表 2023-05-0511.98

可遇到另一个经常遇到的问题，一直登录失败：
2024-06-28 18:08:52  [INFO    ] ---- Click the Agree option.
2024-06-28 18:09:23  [INFO    ] ---- Click login button.
2024-06-28 18:09:23  [INFO    ] ---- Get electricity canvas image successfully.
2024-06-28 18:09:24  [INFO    ] ---- Image CaptCHA distance is 101.
2024-06-28 18:09:55  [INFO    ] ---- Sliding CAPTCHA recognition failed and reloaded.
2024-06-28 18:09:55  [INFO    ] ---- Get electricity canvas image successfully.
2024-06-28 18:09:55  [INFO    ] ---- Image CaptCHA distance is 72.
2024-06-28 18:10:26  [INFO    ] ---- Sliding CAPTCHA recognition failed and reloaded.
2024-06-28 18:10:26  [INFO    ] ---- Get electricity canvas image successfully.
2024-06-28 18:10:27  [INFO    ] ---- Image CaptCHA distance is 231.
2024-06-28 18:10:58  [INFO    ] ---- Sliding CAPTCHA recognition failed and reloaded.
2024-06-28 18:10:58  [INFO    ] ---- Get electricity canvas image successfully.
2024-06-28 18:10:58  [INFO    ] ---- Image CaptCHA distance is 225.
2024-06-28 18:11:29  [INFO    ] ---- Sliding CAPTCHA recognition failed and reloaded.
2024-06-28 18:11:29  [INFO    ] ---- Get electricity canvas image successfully.
2024-06-28 18:11:29  [INFO    ] ---- Image CaptCHA distance is 236.
2024-06-28 18:12:00  [INFO    ] ---- Sliding CAPTCHA recognition failed and reloaded.
2024-06-28 18:12:00  [ERROR   ] ---- Login failed, maybe caused by Sliding CAPTCHA recognition failed
Traceback (most recent call last):
  File "/app/data_fetcher.py", line 244, in fetch
    return self._fetch()
            im_info = driver.execute_script(background_JS)
  File "/app/data_fetcher.py", line 267, in _fetch
    if self._login(driver):
  File "/app/data_fetcher.py", line 357, in _login
    raise Exception(
Exception: Login failed, maybe caused by 1.incorrect phone_number and password, please double check. or 2. network, please mnodify LOGIN_EXPECTED_TIME in .env and run docker compose up --build.
2024-06-28 18:12:01  [ERROR   ] ---- Webdriver quit abnormly, reason: Login failed, maybe caused by 1.incorrect phone_number and password, please double check. or 2. network, please mnodify LOGIN_EXPECTED_TIME in .env and run docker compose up --build.. 5 retry times left.
2024-06-28 18:12:01  [ERROR   ] ---- state-refresh task failed, reason is cannot unpack non-iterable NoneType object
Traceback (most recent call last):
  File "/app/main.py", line 57, in run_task
    user_id_list, balance_list, last_daily_date_list, last_daily_usage_list, yearly_charge_list, yearly_usage_list, month_list, month_usage_list, month_charge_list = data_fetcher.fetch()
TypeError: cannot unpack non-iterable NoneType object
^CTraceback (most recent call last):
  File "/app/main.py", line 90, in <module>
    main()
  File "/app/main.py", line 52, in main
    time.sleep(1)

今天能登录了，测了下我两用户的账号能获取数据。提了个pull request #18 ，不支持30天用电量时，回退到7天。


Added attendee partial put endpoint

Added attendee partial put endpoint to update a user with partial body

same as a previous one which was approved, but it got merged in and didn't affect main? not sure so I made it again

@jacobc2700  can you reoslve merge conflicts


GA Week: Google Tag Manager

@hthair read about GTM and datalayer
@wellcometrust/experience-dev  read about GTM and datalayer
Implementation details - how to implement without breaking what we have.

Things this might solve:

Reporting custom work fields to dimensions (data layer)
Cross domain #3834  https://developers.google.com/analytics/devguides/collection/gtagjs/cross-domain
...

Potentially another good candidate for using the new GA property

Will review with Chris by going through our new proposed set up to see how valuable it is for what we need. Then will work out steps for implementation.

Next step is to add the container to wc.org and wl.org
instructions are here for container implementation (can one of you add this to wc.org for me please :) @jamesgorrie @gestchild) https://tagmanager.google.com/?authuser=1#/admin/accounts/4535612927/containers/10552324/install?containerDraftId=1
@jennpb In terms of what we need library wise, we just need this code added to the site. I'll email it as a word doc so the code doesn't get changed which apparently can happen due to security on emails.

Let us make sure we get the implementation straight on our side, then we can talk to Tom C to make sure it's hooked up the same.

OK - I've noted that in the JIRA issue that you'll be the main point of contact.


Display image on pages

#81 broke the webapp. Which is why it had to be reverted.
Aim - to fix and merge #81
Potential problem- Image links may not have properly been given

@Aatmaj-Zephyr If this issue is still open, I'll take a look into this and figure out why #81 broke the webapp.

Sure


Add the event.as method

Codecov Report

Merging #14 (c69232f) into master (ab5b917) will increase coverage by 0.24%.
The diff coverage is 100.00%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the GitHub App Integration for your organization. Read more.
@@            Coverage Diff             @@
##           master      #14      +/-   ##
==========================================
+ Coverage   86.34%   86.58%   +0.24%
==========================================
  Files           8        8
  Lines         835      850      +15
==========================================
+ Hits          721      736      +15
  Misses        114      114

Flag
Coverage Δ

unittests
86.58% <100.00%> (+0.24%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed
Coverage Δ

src/event.c
100.00% <100.00%> (ø)

src/read.c
87.80% <100.00%> (+0.46%)
:arrow_up:

src/signal.c
87.91% <100.00%> (+0.41%)
:arrow_up:

src/timer.c
85.85% <100.00%> (+0.44%)
:arrow_up:

src/write.c
87.80% <100.00%> (+0.46%)
:arrow_up:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Need help with error response provider

Hi,
Can you please help with a sample/example for customised error responses?
I checked the wiki on that but I am not quite able to get that.
Thank you!

The documentation is intentionally light as a means to discourage changing the response behavior, but there isn't anything complex or secret about it. I'm not sure which platform you're targeting, but I would look at the Web API and ASP.NET Core implementations of the DefaultErrorResponseProvider. This is how things are implemented out-of-the-box. You can choose to extend this base class or roll your own from scratch by implementing IErrorResponseProvider. The possible status codes, error codes, and the way that you wire it up in options are all documented in the wiki. It should be straight forward. Most people who have changed the response have only been interested in changing the status code, which is very simple to do.
Let me know if you have more questions.

Thanks a lot


Integrate typedoc to generate code documentation.

Signed-off-by: Jérôme Benoit<EMAIL_ADDRESS>PR Checklist

[x] Please add a description of your changes.
[ ] We need your changes to come with unit tests in order to keep this project in quality and easy to maintain.
[ ] Please add a link to the open issue or task that this pull request will resolve.
[ ] Add a note to the changelog to indicate the change.

Does this PR introduce a breaking change?

[ ] Yes
[x] No

If yes please indicate it and migration info into the CHANGELOG.md file.

You can drag and drop an image into a comment from a random issue in GitHub
This will generate a link for the image and this can be used from everywhere (like a Dropbox :laughing:)
So you could upload the logo and use the generated link in the readme instead of adding it to the repo
Downside would be that we havn't the raw versioned image, but it's not an svg so this should not be the raw original anyways

Downside would be that we havn't the raw versioned image, but it's not an svg so this should not be the raw original anyways

But why we should? We have a repo so we don' t need a link to an external issue or source

Looks good, so we now generate our JSDoc but still not include into our git repo right ?

Not yet because I do not know how it's going to look like on GitHub.
We must first test it before to finalize the typedoc integration. It's the first step, so others dev can have a look at the typedoc output, etc.

We should generate the docs folder and commit it to GitHub
Then @pioardi needs to enable the GH pages feature for the /docs folder

@pioardi Now you need to enable the docs as gh pages
Something like this on repo settings in the options section really far below

Here we go https://pioardi.github.io/poolifier/

@pioardi It's also possible to add a link to the repo that links to the page

Click on the settings cogs
Add the website link

example:

Yep done bro.
@jerome-benoit  @Shinigami92  I think we are ready to release !!! what do you think ? Do you want to add any particular detail to our changelog before to release or you feel that we can move on ?

@pioardi If you release, do not forget to remove/replace the changelogs not released yet


v8 -> BRPopLPush canceling context doesn't work

Hi,
I'm using github.com/go-redis/redis/v8 v8.2.3
Canceling the context doesn't work for BRPopLPush.
package v8_test

import (
	"context"
	"fmt"
	"github.com/alicebob/miniredis"
	"github.com/go-redis/redis/v8"
	"testing"
	"time"

	"github.com/stretchr/testify/assert"
)

func TestGoRedisV8_BRPopLPush(t *testing.T) {
	ctx := context.Background()

	//list keys for redis
	list1 := "list1"
	list2 := "list2"

	//using miniredis
	mr, _ := miniredis.Run()
	r := redis.NewClient(&redis.Options{Addr: mr.Addr()})

	//use a context with timeout of 1 second
	testContext, cancel := context.WithTimeout(ctx, 1*time.Second)

	//RPush one element to list1 AFTER BRPopLPush is done
	value1, err := r.BRPopLPush(testContext, list1, list2, 0*time.Second).Result()
	assert.Empty(t, value1)
	assert.Error(t, err)          //"context deadline exceeded" error is returned
	cancel()                      //manually cancel the context (although that isn't required, as it should've timed out already)
	r.RPush(ctx, list1, "value1") //after BRPopLPush is supposedly done, push an element to list1

	//logs -> as you can see, the BRPopLPush still moved value1 to list2
	fmt.Println("list1: " + r.LRange(ctx, list1, 0, -1).String())
	fmt.Println("list2: " + r.LRange(ctx, list2, 0, -1).String())

	//asserts
	list1Length, _ := r.LLen(ctx, list1).Result()
	assert.Equal(t, 1, int(list1Length), "list1 should have 1 element") //FAILS
	list2Length, _ := r.LLen(ctx, list2).Result()
	assert.Equal(t, 0, int(list2Length), "list2 should have 0 elements") //FAILS
}

context.WithTimeout does not cancel Redis command. AFAIK Redis does not support that.

So there's no way to cancel a BRPopLPush where the timeout has been set to 0, even though the function call has already returned (due to a canceled context)?
I thought #1493 fixed this?

And if so, what was the reasoning behind introducing a context at all?

So there's no way to cancel a BRPopLPush where the timeout has been set to 0

AFAIK Redis does not provide such API.

And if so, what was the reasoning behind introducing a context at all?

So the app can continue even though there is a pending BRPopLPush. Ctx limits maximum processing time.


Adds the ability to include records with a null tenant ID field

Adds the ability to include records with a null tenant ID field in queries.
For example if there is a list of base system categories that can be added to by the users(s) of an individual tenant for their sole use.
Re-sets the global scope queries to add 'OR WHERE tenant_field_id IS NULL'

Sorry, this is not something I want to include in Landlord. This package is specifically designed to be rock-solid on acting as a tenant whitelist, and protecting devs from tenancy leaks. This PR is too dangerous with that goal in mind. Thanks though!


feat: port Algebra.Hom.Group

mathlib3 SHA: 8c53048add6ffacdda0b36c4917bfe37e209b0ba

[x] depends on #563
[x] depends on https://github.com/leanprover-community/mathlib/pull/17733

@winstonyin, I've merged master, which included several fixes for to_additive. Could you check the to_additive porting notes and see if things work better now?

Oh, my mistake, I thought #678 was merged already. Maybe to_additive hasn't actually improved much yet.

I wonder if the typeclass timeouts are related to https://github.com/leanprover/lean4/issues/1891, which will be fixed tomorrow.

It looks like this PR is going to need to wait on https://github.com/leanprover/lean4/pull/1901.

That's fixed, but now blocked by https://github.com/leanprover/lean4/issues/1907.


Mastodon icon

Describe the requested icon
Since there a new exodus, especially from twitter, mastodon has been more popular every day.
Screenshots
An svg file

Additional context
Social media

Duplicate of #216

I searched as 'icon', I'll close it now, thanks @ThatOneCalculator .


master branch to be migrated to 0.5.0 version

Version 0.5.0 currently in dev-0.5.0 branch has many improvements over the old implementation.
Although it has many breaking changes, migrating code is not complicated because it consists mostly of deleting extra arguments to model functions and adding a session argument to model constructor when not using the default session.
The model instance is now associated with a session and carries with it all the data extraction information reducing the noise in the code. See: https://github.com/vsch/kotlin-jdbc/blob/dev-0.5.0/README.md
Scripts for generating models were also greatly improved to reduce and in most cases eliminate the need for manual editing. An optional model-config.json file defines the mapping of models to generated file names, directory location and package for a project.
Overall, the pain of migrating code is worth the gain in convenience.
Most likely the next 0.4.12 version will be the last update to 0.4.0 branch

Any timeline for the 0.5.0 release? Looking at a replacement for spring JdbcTemplate

@jontro, I will add a release of this for end of this week.
I dropped the ball on this project because I have been working around the clock on  flexmark-java and Markdown Navigator plugin for JetBrains IDEs. The latter was broken by a latest release of the IDE, in a way that required major surgery to replace a broken library.
I added a due date for this coming Sunday so it will be done by Monday.

Just asking :) Thanks for taking the time working on open source!

@jontro, it is good to ask. It lets me know that someone needs a release. Otherwise, I feel like it's only me and for that I have my local dev build so going through the trouble of a release gets low priority.
I will take the time to make a release this weekend.

@jontro, Repo updated, maven updated but may take a while to show up in maven central.


Warnings when loading the TreatmentPatterns package

I'm not totally sure what's causing these messages on the package load but it would be nice to clean this up so there are no warnings when the user loads the package.
Restarting R session...

> library(TreatmentPatterns)
Creating a generic function for ‘toJSON’ from package ‘jsonlite’ in package ‘googleVis’
Warning messages:
1: replacing previous import ‘data.table::last’ by ‘dplyr::last’ when loading ‘TreatmentPatterns’
2: replacing previous import ‘data.table::first’ by ‘dplyr::first’ when loading ‘TreatmentPatterns’
3: replacing previous import ‘data.table::between’ by ‘dplyr::between’ when loading ‘TreatmentPatterns’

I took a look at this, this should be resolved on dev: 6435bcc0f2ea09e2eb96f65b0a48ea796d075f96 and beta: 6435bcc0f2ea09e2eb96f65b0a48ea796d075f96, in an effort to make the package pass R-CMD-check.


TestPyLint fails without explanation if E1101 errors

TestPyLint suppresses logging of E1101 errors (no-member) but still fails if code "rated" below threshold
Your code has been rated at -10.00/10 (previous run: -10.00/10, +0.00)

Possibly find a way to suppress errors for directory so that the error doesn't just get suppressed in the test, so as not to affect code "rating"?

https://github.com/PyCQA/pylint/issues/618 will fix this

We can get around this in the meantime by having the test find the first .pylintrc while navigating upwards (also look into possibly merging all found .pylintrc files while navigating upwards)

Solved with https://github.com/loopmediagroup/py-gardener/pull/8


Version 2.6.0 generated mjs file does not have named exports

In version 2.6.0, the generated .mjs file exposes only a default export of an object containing the Router, the syntax import {Router} from 'itty-router' does not work.
The generated .mjs file contains the following code, and is picked up by Rollup and Webpack by default, causes build to fail. Reverting back to version 2.5.3 works.
export default{Router:function({base:t="",routes:n=[]}={}){return{__proto__:new Proxy({},{get:(e,a,o)=>(e,...r)=>n.push([a.toUpperCase(),RegExp(`^${(t+e).replace(/(\/?)\*/g,"($1.*)?").replace(/\/$/,"").replace(/:(\w+)(\?)?(\.)?/g,"$2(?<$1>[^/]+)$2$3").replace(/\.(?=[\w(])/,"\\.").replace(/\)\.\?\(([^\[]+)\[\^/g,"?)\\.?($1(?<=\\.)[^\\.")}/*$`),r])&&o}),routes:n,async handle(e,...r){let a,o,t=new URL(e.url);e.query=Object.fromEntries(t.searchParams);for(var[p,s,u]of n)if((p===e.method||"ALL"===p)&&(o=t.pathname.match(s))){e.params=o.groups;for(var c of u)if(void 0!==(a=await c(e.proxy||e,...r)))return a}}}}};

Thanks!  PR pending :)


docs: how bluebuild works

https://blue-build.org/learn/how/
Outline the process of turning recipes into containerfiles, the repo structure, how the modules are launched and what they do, etc.
Will need help from @gmpinder here at least. You got a good docs streak going with the #48 PR lol, so creating an issue for this now.

I figured that an example recipe would be a great way to start this, so here's a sketch. The comments are WIP and won't stay like that.
# example-recipe.yml

# metadata
name: turquoise
description: An example recipe for explaining how BlueBuild works.

# base image
base-image: ghcr.io/ublue-os/silverblue-main
image-version: latest

# stages, to explain all that
stages:
  - name: helix
    from: docker.io/library/rust
    modules:
      - type: script
        snippets:
          - apt-get update && apt-get install -y git # Install git
          - git clone https://github.com/helix-editor/helix.git # Clone the helix repo
          - cd helix && RUSTFLAGS="-C target-feature=-crt-static" cargo install --path helix-term # Use cargo to install
          - mkdir -p /out/ && mv $CARGO_HOME/bin/hx /out/hx && mv runtime /out/ # Move bin and runtime

modules:
  # helix stage copy
  - type: copy
    from: helix
    src: /out/hx
    dest: /usr/bin/
  - type: copy
    from: helix
    src: /out/runtime
    dest: /usr/lib64/helix/

  - type: files
    files:
       - usr: /usr # need to do the files-related changes because i don't wanna be stuck explaining this

  # classic module of the build-time-only variety
  - type: rpm-ostree
    repos:
       - https://copr.fedorainfracloud.org/coprs/atim/starship/repo/fedora-%OS_VERSION%/atim-starship-fedora-%OS_VERSION%.repo
     install:
        - fish
        - starship

  # classic module of the post-boot variety
  - type: default-flatpaks
    user:
        install:
            - org.kde.krita
            - org.blender.Blender
            - org.gnome.World.PikaBackup

I was just imagining what an explainer for the build system could look like and I feel like Animotion slides (reveal.js under the hood) could be a great fit. If I can make like a system for it that that shows text on the bottom and such. Joy of Code uses it for their pleasing coding tutorial videos and I'm just hearing the whole doc pages read in their voice, lol.
Just a thought. Feels like it would be easier to explain the whole thing in more of a slides format.

I got Animotion working locally as an embed on a doc page. It works pretty well and I could see this thing explained with it.
However, it also has to work in the context of a documentation webpage. What we gain in interactivity we lose in responsiveness, and the slideshows are basically unusable on mobile.
It will likely be better to just write the docs normally. If any extra interactivity is desired it is possible to add that in with some code.

What parts of the tool do we want to explain and how deep should we go? Are you thinking just high level this is how it orchestrates building? Do we want to go into detail about making use of cache for building?
I personally don't mind having animations, so long as I'm not the one making them lol.

I personally don't mind having animations, so long as I'm not the one making them lol.

Ha. It might be something I use to motivate myself, or it might a distraction. We'll see.

What parts of the tool do we want to explain and how deep should we go? Are you thinking just high level this is how it orchestrates building? Do we want to go into detail about making use of cache for building?

It's a bit nebulous in my head. I guess the goal for me would be to have casual docs users able to understand how their image is built from a recipe, with the most important part being generating the RUN statement for modules. Another goal is helping potential contributors understand the system more, making it easier to delve into code or writing docs or whatever.
It would be great to be able to write all about the caching and the 'drivers' you are working on and such, maybe as some sort of collapsible sections or sub-articles. But that's mostly your area of expertise nowadays, and I wouldn't consider it as important the higher-level overview. I don't know how much you're interested in writing technical documentation, maybe some devlog-style writing would be interesting too. I plan on doing a big technical write-up once/if Workshop gets to a stage where a novice could just click-click through it and customize their own image.

I have a branch called create-docs on the CLI repo which I'm trying to use a MD book site that would be useful for making documentation specifically for bluebuild cli.
I haven't made any real progress on it. I do want to try to pick that back up though, because it would be really useful to keep the docs for the CLI in the same repo. I could reserve these docs mostly for the more technical side of the CLI and then we can have the website handle all the more higher-level user-facing features.

@gmpinder if you see a way to integrate those docs into the main website somehow, it wouldn't be hard to write a plugin for Starlight / Astro that fetches the MD from the CLI repo.


Konabuta/372385/readme japanese integrate

Purpose

integrate readme with workshop docs

Does this introduce a breaking change?

[ ] Yes
[x] No

Pull Request Type
What kind of change does this Pull Request introduce?

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[x] Documentation content changes
[ ] Other... Please describe:

How to Test

Test the code
n/a

What to Check
Verify that the following are valid

Read document

Other Information

@sasukeh @kotetz I want you to review this document updates.


Fix bug in base_workflow.py

Received the following traceback in BiaPy_2D_instance_Segmentation.ipynb (did not modify the code in the notebook in any way), which prevented the training and inference from completing correctly:
Traceback (most recent call last):
  File "/content/BiaPy/main.py", line 51, in <module>
    _biapy.run_job()
  File "/content/BiaPy/biapy/_biapy.py", line 415, in run_job
    self.test()
  File "/content/BiaPy/biapy/_biapy.py", line 159, in test
    self.workflow.test()
  File "/usr/local/lib/python3.10/dist-packages/torch/utils/_contextlib.py", line 115, in decorate_context
    return func(*args, **kwargs)
  File "/content/BiaPy/biapy/engine/base_workflow.py", line 823, in test
    self.process_sample(norm=(X_norm, Y_norm))
  File "/content/BiaPy/biapy/engine/instance_seg.py", line 514, in process_sample
    super().process_sample(norm)
  File "/content/BiaPy/biapy/engine/base_workflow.py", line 1353, in process_sample
    if isinstance(p, list):
UnboundLocalError: local variable 'p' referenced before assignment

Same bug also exist when I try to run the workflow yaml file generated in the notebook, but in the GUI:

Thank you so much for correcting the typo!


ASA-6609 & ASA-6586 (#88)

ASA-6609

ASA-6609

Update SAClient.java

Update ServiceUtil.java

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Manual  compaction raises diskfull when titan is enable

Bug Report

What version of TiKV are you using?

What operating system and CPU are you using?

Steps to reproduce

titan enable and reserve-space 100GB
wide table read write until the available store size is about 400~500GB
follows the guide to close titan https://docs.pingcap.com/zh/tidb/stable/titan-configuration#关闭-titan
when execute tikv-ctl --pd <PD_ADDR> compact-cluster --bottommost force, the tikv disk full
What did you expect?
What did happened?

It's likely due to incorrect document. The disregard-ratio should not be 1.

It will be resolved by the document in 7.6 (https://github.com/pingcap/docs/pull/15986),  the fallback should require enough space before proceeding.
However, after 7.6, we should do the check in the code.

@v01dstar is implementing the Punch hole function in Titan, which can delete unneeded blobs from blob file without the need of blob file compaction.  This feature should help to address this issue.

Correct improper operation in doc. Change it to major issue.


Combine eq step constraints into single constraint

This change is

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#799  👈
#798
dev

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @andrewmilson and the rest of your teammates on  Graphite

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 92.26%. Comparing base (e0f1063) to head (73f1ab4).

Additional details and impacted files
@@                                      Coverage Diff                                      @@
##           08-20-Move_all_MLE_eval_related_constraints_into_same_module     #799   +/-   ##
=============================================================================================
  Coverage                                                         92.26%   92.26%
=============================================================================================
  Files                                                                91       91
  Lines                                                             12442    12442
  Branches                                                          12442    12442
=============================================================================================
  Hits                                                              11479    11479
  Misses                                                              857      857
  Partials                                                            106      106

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.