[feature] lazy attribute rendering + form fill

Is it possible to return the element tree without the attributes filled out? It's common that I want to add a class or ID after the fact to an element. I commonly generate a wrapper div with a unique class because I don't access the original element's attributes - it could be I'm not understanding how to handle this use case properly.
I also think that another common use case would be something similar to fasthtml's fill_form

for 1:
let's say I want to run some JS on the page and pass an element to the JS. in this case, i want to know the selector for the element.
what I would like to do:
el = render_some_content(...);
selector = determine_class(el);
run_javascript("console.log", selector);
run_javascript("document.querySelector", selector);

what i currently do:
def wrap_element(el):
    selector = generate_unique_class();
    return selector, div(class_=[selector])[el];

el = render_some_content(...);
selector, el = wrap_element(el);
run_javascript("console.log", selector)
run_javascript("document.querySelector", selector)

for 2:
do you want code for this? or are the docs enough?

All elements in htpy are immutable (just like in JSX/React). You cannot really change an element once it is created, this is by design. This makes it possible to use the same element in multiple places without having the risk of it changing in an unexpected way.

If you do not want a wrapping div around your element, I would suggest that you make it possible to set the class/selector on render_some_content(). That way, just looking at the code you can see that they reference the same selector and you have no surprises from mutable objects>
selector = generate_unique_class()
el = render_some_content(..., selector=selector)
run_javascript("console.log", selector)
run_javascript("document.querySelector", selector)

htpy just tries to render html elements and not much more. You can certainly build a function like fill_form or a system to generate html forms with htpy if you like.

Displaying forms with predefined values, validation errors, help texts, labels, layouts etc is a complex problem and I can see fill_form fills (setting value to fields from python attributes) a very small piece of that.
I have built everything from trivial forms to huge complex forms with htpy, mainly using django.forms (see this example). There are also libraries such as https://django-floppyforms.readthedocs.io/en/latest/  and https://wtforms.readthedocs.io/en/3.2.x/ that renders the fields and also has a bunch of nice widgets, validation etc.
If someone is interested, building a set of django widgets or wtforms widgets in htpy would be straightforward and publishing them as a package would be possible. It would also be possible to create a full forms library built on top of htpy rendering.

thanks for the explanations!

All elements in htpy are immutable (just like in JSX/React). You cannot really change an element once it is created, this is by design. This makes it possible to use the same element in multiple places without having the risk of it changing in an unexpected way

is there a reference to this in the docs? i saw it was inspired by react, but didn't realize about the immutability portion except when i read the code and saw that everything is generated as a string upon creation

I have built everything from trivial forms to huge complex forms with htpy, mainly using django.forms

thanks, i'll look at these examples. i'm not using django (just fastAPI + pydantic), will see what they have in common.

Thanks for the suggestion about immutability, I have added it to the docs now:
https://htpy.dev/common-patterns/#creating-components
I hope it makes it clearer going forward!
Closing this issue now, feel free to reopen or open another issue if you have any ideas/suggestions!


watchState not working with vanilla js

Currently testing out the library, looks very cool! Was implementing the count example from the docs and wanted to have a watchState render the new state when it changes. I think I set it up correctly but it doesn't seem to fire the watchState callback when mutating the count property. Here is my code:
import { createState, setState, watchState, setDiffxOptions } from 'https://cdn.skypack.dev/@diffx/core';

const countEl = document.querySelector('#counter');
const incButton = document.querySelector('#inc');
const decButton = document.querySelector('#dec');

setDiffxOptions({ createDiffs: true });

const clickState = createState('click state', { count: 0 });

function renderCount(count) {
  countEl.innerText = `Count: ${count}`;
}

const unwatch = watchState(
  () => clickState,
  (newVal, oldVal) => {
    renderCount(newVal.count);
  }
);

incButton.addEventListener('click', () => {
  setState('increase count', () => clickState.count++);
});

decButton.addEventListener('click', () => {
  setState('decrease count', () => clickState.count--);
});

Thanks for the report and clean reproduction! :smiley:
I also get the same error when trying the example you provided, but I can't really see why it happens, and the core tests pass with the same (newest) version of the dependencies as skypack uses.
Example of a working version here bundled by vite (https://github.com/jbjorge/diffx-core-issue-explorer)
Could it be skypack doing something weird/non-standard when bundling the code?

Ah very possible, I'll attempt with the default node module and see if that works!

Haven't pinpointed the issue quite yet, but as far as I can tell, the underlying library for Diffx (@vue/reactivity) doesn't work when it's compiled with process.env.NODE_ENV = 'production'.
I suspect skypack builds all dependencies in production-mode, so that's out of my control (if that is actually the issue).
To circumvent this, @diffx/core now also offers a browser-importable build as described in https://github.com/jbjorge/diffx/tree/master/core#installation


Mapping from SImapro flowlists with only base context values generates 1:N, N:1 and N:M mappings

Here's an extract from simapro_ecoinvent_elementary_flows:

To the best of our understanding, the elementary flow list provided by PRé uses a different model for the Context value than what is used in ecoinvent. For one thing, they have one UUID for flows, regardless of the subcategory Context values. Indeed, the master data list includes only the base Category values

The impact is that mappings from Simapro flowlists with only base context values are not majorly 1:1. From the 1646 unique Simapro flows mapped in SimaProv94-ecoinventEFv3.7.csv the breakdown is:

one-to-one: 725
one-to-many: 326
many-to-many: 575
many-to-one: 20

From the description of FlowMap and FlowMapEntry I couldn't understand if the specs were created considering this case, but the issue https://github.com/GreenDelta/olca-app/issues/102 seems to indicate that it was not[^20231119T173534].
[^20231119T173534]: Although this wouldn't necessarily change the open LCA schema spec.

I think we might be going down the wrong path here - the provided SimaPro flow list is not what we would see in the real world. Here is an extract of an actual flow list, including full contexts:
simapro-flows.json.zip
(Sorry, should have communicated on this more clearly earlier)

@fjuniorr You will notice that there will be some flows like Ammonia, NL, which are squishing a name and a location code together. We need to separate these in a separate transformation, and store the location (as either location or geography).
The pattern I have seen is that:

There is a flow without a location code (e.g. Ammonia)
The location code is comma, space, capitalized two-letter code.
The codes are ISO 3166 country codes. Here is a list: https://datahub.io/core/country-list, but we should add Kosovo (XK) to this, as even though it is not official it is widely used in LCA.

I think we might be going down the wrong path here - the provided SimaPro flow list is not what we would see in the real world. Here is an extract of an actual flow list, including full contexts:

Do you know if the SimaPro flow list will always have full contexts? I was operating under the assumption that sometimes it would have, and other times it would not.

You will notice that there will be some flows like Ammonia, NL, which are squishing a name and a location code together. We need to separate these in a separate transformation, and store the location (as either location or geography).

I will track this down in https://github.com/fjuniorr/flowmapper/issues/14.
But IHMO this is a good example of a mapping that could be defined as an N:1 transformation since ecoinvent doesn't appear to define a location as a property of a flow:
<elementaryExchange id="9990b51b-7023-4700-bca0-1a32ef921f74" unitId="487df68b-4994-4027-8fdc-a4dc298257b7" casNumber="007664-41-7">
  <name xml:lang="en">Ammonia</name>
  <unitName xml:lang="en">kg</unitName>
  <compartment subcompartmentId="e8d7772c-55ca-4dd7-b605-fee5ae764578">
    <compartment xml:lang="en">air</compartment>
    <subcompartment xml:lang="en">urban air close to ground</subcompartment>
  </compartment>
  <property propertyId="6393c14b-db78-445d-a47b-c0cb866a1b25" amount="0"/>
  <property propertyId="6d9e1462-80e3-4f10-b3f4-71febd6f1168" amount="0"/>
  <property propertyId="a9358458-9724-4f03-b622-106eda248916" amount="0">
    <comment xml:lang="en">water mass/dry mass</comment>
  </property>
  <property propertyId="c74c3729-e577-4081-b572-a283d2561a75" amount="0"/>
  <property propertyId="67f102e2-9cb6-4d20-aa16-bf74d8a03326" amount="1"/>
  <property propertyId="3a0af1d6-04c3-41c6-a3da-92c4f61e0eaa" amount="1"/>
</elementaryExchange>

@cmutel do you know if the SimaPro flow list will always have full contexts? I was operating under the assumption that sometimes it would have, and other times it would not.

It always will, the final substance list you link to was prepared for me by special request; the data we get from SimaPro exports always have the full context.

But IHMO this is a good example of a mapping that could be defined as an N:1 transformation since ecoinvent doesn't appear to define a location as a property of a flow

Ecoinvent doesn't because it is wrong (I will die on this particular hill). Elementary flows - the things we are talking about - are not located in time and space. That information comes from the processes which they interact with.
The inclusion of locations into elementary flows lists is a horrible hack to overcome poor data models choices or an inability to update legacy software.
Which is a long way to say that you are correct 😛

@cmutel do you know if the SimaPro flow list will always have full contexts? I was operating under the assumption that sometimes it would have, and other times it would not.

It always will, the final substance list you link to was prepared for me by special request; the data we get from SimaPro exports always have the full context.

In one list we have:
  {
    "name": "Carbon dioxide, in air",
    "context": [
      "Resources",
      ""
    ],
    "unit": "kg"
  }

and in the one you linked above we have:
  {
    "name": "Carbon dioxide, in air",
    "categories": [
      "Raw",
      "(unspecified)"
    ],
    "unit": "kg",
    "CAS": "000124-38-9"
  }

From what you wrote here I think the difference is because exports from master flow list / LCI file / LCIA file can be slightly different, correct?
Also, is it safe to assume that empty secondary contexts should always be equal to unspecified and both flows are the same?

the data we get from SimaPro exports always have the full context.

Well, you learn something new every day. I thought that this would always be ["Resources", "(unspecified)"]. I wonder if this was a data entry mistake, not from the "official" flow list.

From what you wrote here I think the difference is because exports from master flow list / LCI file / LCIA file can be slightly different, correct?

I guess so? But I think we won't be able to capture the full creativity of SimaPro users, and if we fail under unexpected circumstances that is OK.

Also, is it safe to assume that empty secondary contexts should always be equal to unspecified and both flows are the same?

Yes - and Brightway even removes (unspecified).

I'm closing this since the actionable itens have their own issues.


(Enhancement) XML Serializer: etr support request

Support for etr files would be great since editing them with xml converter makes them crash the game.

Update the deleting color animations fixes the crash problem


No depth data processed on odroid xu4

This was observed on odroid xu4. The libfreenect2 was installed with all the corresponding dependencies. But since odroid does not support OpenGL processing could not open the viewer with display of the stream from kinect2. But from the output log from libfreenect2 it looks like it has been successfully able to receive the streams. Below is the output from Protonect.
[Debug] [DepthPacketStreamParser] skipping depth packet
[Debug] [RgbPacketStreamParser] skipping rgb packet!
[Debug] [DepthPacketStreamParser] skipping depth packet
[Debug] [RgbPacketStreamParser] skipping rgb packet!
[Info] [TurboJpegRgbPacketProcessor] avg. time: 77.2071ms -> ~12.9522Hz
[Debug] [DepthPacketStreamParser] skipping depth packet
[Debug] [RgbPacketStreamParser] skipping rgb packet!
[Debug] [DepthPacketStreamParser] skipping depth packet
[Info] [OpenCLDepthPacketProcessor] avg. time: 74.0777ms -> ~13.4993Hz
[Debug] [DepthPacketStreamParser] skipping depth packet
[Debug] [RgbPacketStreamParser] skipping rgb packet!
The viewer is turned off. Received 100 frames. Ctrl-C to stop.
Now, after I launch the kinect2_bridge and try to read some topic such as the sd color data, there is no output being published to the topic and this the log from the kinect2_bridge
NODES
/
kinect2 (nodelet/nodelet)
kinect2_bridge (nodelet/nodelet)
kinect2_points_xyzrgb_hd (nodelet/nodelet)
kinect2_points_xyzrgb_qhd (nodelet/nodelet)
kinect2_points_xyzrgb_sd (nodelet/nodelet)
auto-starting new master
process[master]: started with pid [1791]
ROS_MASTER_URI=http://localhost:11311
setting /run_id to ae4ba1b0-4a72-11e6-918c-7cdd90521254
process[rosout-1]: started with pid [1804]
started core service [/rosout]
process[kinect2-2]: started with pid [1807]
process[kinect2_bridge-3]: started with pid [1808]
process[kinect2_points_xyzrgb_sd-4]: started with pid [1809]
process[kinect2_points_xyzrgb_qhd-5]: started with pid [1810]
process[kinect2_points_xyzrgb_hd-6]: started with pid [1812]
[ INFO] [1468576711.211040188]: Loading nodelet /kinect2_bridge of type kinect2_bridge/kinect2_bridge_nodelet to manager kinect2 with the following remappings:
[ INFO] [1468576711.255780083]: waitForService: Service [/kinect2/load_nodelet] has not been advertised, waiting...
[ INFO] [1468576711.273860724]: Initializing nodelet with 8 worker threads.
[ INFO] [1468576711.284488750]: waitForService: Service [/kinect2/load_nodelet] is now available.
[ INFO] [1468576712.041307763]: [Kinect2Bridge::initialize] parameter:
base_name: kinect2
sensor: default
fps_limit: -1
calib_path: /home/odroid/catkin_ws/src/iai_kinect2/kinect2_bridge/data/
use_png: false
jpeg_quality: 90
png_level: 1
depth_method: default
depth_device: -1
reg_method: default
reg_device: -1
max_depth: 12
min_depth: 0.1
queue_size: 5
bilateral_filter: true
edge_aware_filter: true
publish_tf: false
base_name_tf: kinect2
worker_threads: 4
[Info] [OpenCLDepthPacketProcessorImpl]  devices:
[Info] [OpenCLDepthPacketProcessorImpl]   0: Mali-T628 (GPU)[ARM]
[Info] [OpenCLDepthPacketProcessorImpl]   1: Mali-T628 (GPU)[ARM]
[Info] [OpenCLDepthPacketProcessorImpl] selected device: Mali-T628 (GPU)[ARM]
[Info] [OpenCLDepthPacketProcessorImpl] building OpenCL program...
[Info] [OpenCLDepthPacketProcessorImpl] OpenCL program built successfully
[Warning] [OpenCLDepthPacketProcessorImpl] Your ocl-icd has deadlock bugs. Update to 2.2.4+ is recommended.
[Info] [Freenect2Impl] enumerating devices...
[Info] [Freenect2Impl] 16 usb devices connected
[Info] [Freenect2Impl] found valid Kinect v2 @4:4 with serial<PHONE_NUMBER>47
[Info] [Freenect2Impl] found 1 devices
[ INFO] [1468576712.425850594]: [Kinect2Bridge::initDevice] Kinect2 devices found:
[ INFO] [1468576712.426070844]: [Kinect2Bridge::initDevice]   0:<PHONE_NUMBER>47 (selected)
[Info] [Freenect2DeviceImpl] opening...
[Info] [Freenect2DeviceImpl] transfer pool sizes rgb: 2016384 ir: 608*33792
[Info] [Freenect2DeviceImpl] opened
[ INFO] [1468576712.618130405]: [Kinect2Bridge::initDevice] starting kinect2
[Info] [Freenect2DeviceImpl] starting...
[Info] [Freenect2DeviceImpl] submitting rgb transfers...
[Info] [Freenect2DeviceImpl] submitting depth transfers...
[Info] [Freenect2DeviceImpl] started
[ INFO] [1468576713.516232760]: [Kinect2Bridge::initDevice] device serial:<PHONE_NUMBER>47
[ INFO] [1468576713.516511051]: [Kinect2Bridge::initDevice] device firmware: 4.0.3911.0
[Info] [Freenect2DeviceImpl] stopping...
[Info] [Freenect2DeviceImpl] canceling rgb transfers...
[Info] [Freenect2DeviceImpl] canceling depth transfers...
[Info] [Freenect2DeviceImpl] stopped
[Info] [OpenCLDepthPacketProcessorImpl] building OpenCL program...
[Error] [OpenCLDepthPacketProcessorImpl] kernel_filterPixelStage2 = cl::Kernel(program, "filterPixelStage2", &err): -45
[Error] [OpenCLDepthPacketProcessor] could not initialize OpenCLDepthPacketProcessor
[Info] [OpenCLDepthPacketProcessorImpl] OpenCL program built successfully
[ WARN] [1468576713.916792443]: [Kinect2Bridge::initCalibration] using sensor defaults for color intrinsic parameters.
[ WARN] [1468576713.916994067]: [Kinect2Bridge::initCalibration] using sensor defaults for ir intrinsic parameters.
[ WARN] [1468576713.917162401]: [Kinect2Bridge::initCalibration] using defaults for rotation and translation.
[ WARN] [1468576713.917365025]: [Kinect2Bridge::initCalibration] using defaults for depth shift.
[ INFO] [1468576714.261370247]: [DepthRegistration::New] Using OpenCL registration method!
[ INFO] [1468576714.261701121]: [DepthRegistration::New] Using OpenCL registration method!
[ INFO] [1468576714.319247457]: [DepthRegistrationOpenCL::init] devices:
[ INFO] [1468576714.319538456]: [DepthRegistrationOpenCL::init]   0: Mali-T628
[ INFO] [1468576714.319742164]: [DepthRegistrationOpenCL::init]   1: Mali-T628
[ INFO] [1468576714.320022914]: [DepthRegistrationOpenCL::init] selected device: Mali-T628
[ INFO] [1468576714.800210693]: [DepthRegistrationOpenCL::init] devices:
[ INFO] [1468576714.800506109]: [DepthRegistrationOpenCL::init]   0: Mali-T628
[ INFO] [1468576714.800679317]: [DepthRegistrationOpenCL::init]   1: Mali-T628
[ INFO] [1468576714.800842692]: [DepthRegistrationOpenCL::init] selected device: Mali-T628
[ INFO] [1468576715.435450127]: [Kinect2Bridge::main] waiting for clients to connect
[ INFO] [1468576748.275033788]: [Kinect2Bridge::callbackStatus] client connected. starting device...
[Info] [Freenect2DeviceImpl] starting...
[Info] [Freenect2DeviceImpl] submitting rgb transfers...
[Info] [Freenect2DeviceImpl] submitting depth transfers...
[Info] [Freenect2DeviceImpl] started
[Info] [DepthPacketStreamParser] -1 packets were lost
[ INFO] [1468576751.822776727]: [Kinect2Bridge::main] depth processing: ~nanms (~nanHz) publishing rate: ~0Hz
[ INFO] [1468576751.825882223]: [Kinect2Bridge::main] color processing: ~23.5712ms (~42.4247Hz) publishing rate: ~10.6652Hz
[ INFO] [1468576754.828565558]: [Kinect2Bridge::main] depth processing: ~nanms (~nanHz) publishing rate: ~0Hz
[ INFO] [1468576754.829480431]: [Kinect2Bridge::main] color processing: ~16.2065ms (~61.7037Hz) publishing rate: ~10.9762Hz
[ INFO] [1468576757.834223555]: [Kinect2Bridge::main] depth processing: ~nanms (~nanHz) publishing rate: ~0Hz
[ INFO] [1468576757.838277299]: [Kinect2Bridge::main] color processing: ~15.5676ms (~64.2361Hz) publishing rate: ~11.3233Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 69.984ms -> ~14.289Hz
From the log it indicates that there is no depth data being received but there seems to be color data. But even if only color data is being processed there is still no data being published to topics like '/kinect2/sd/image_color_rect'.
Wanted to know if anyone else have faced similar issue. Is this due to an issue with OpenCL or any other dependency not being present or is an issue solely on odroid.
Would highly appreciate your help regarding the same.

Apologies for the opening a non issue. It worked after starting a roscore manually and then running kinect2_bridge node individually. I earlier thought that the kinect2_bridge launch file would automatically start a roscore. But strangely when it was launched using the launch file, there was no data being published to any of the data topics. But when I launched the node individually it was working fine.
Not sure why these two are different.
Out of curiosity it would be interesting to know if any one else have written application for kinect using odroid. Wanted to know if it is viable solution.
Closing the issue.

You are correct, if there is no roscore running, normally roslaunch is starting one automatically.


Mythril is slow while executing proxy.sol

Description
As @b-mueller mentioned in #1042 mythril is slow while executing proxy.sol which is a very small contract.

It seems like we're entering a loop where the calldata is copied byte-per-byte until max-depth is reached. For reference here is the function:
  function forward(address callee, bytes _data) public {
    require(callee.delegatecall(_data));
  }

@b-mueller we can close this right? Now it takes around 13s to finish

Yep, can close long ago!


Fix tab color break caused by VS Code merge

Fixes #2742 which broke in the last VS Code merge because the editor group changes removed some of our VS Code source edits and stopped calling tab redraw automatically after a connection

It wasn't so much of a mismerge as caused by VS Code completely deleting and rewriting the code that we had edited. Not sure if we need a better way for tracking that kind of thing


#751 Add .tar.7z support

@adamhathcock I started over after being unable to merge the latest changes to my fork, got rid of the ArchiveType change as well so should be good to go

Thanks!


"Released unknown imageData reference"

I am doing the clustering dynamically to get an acceptable performance:
 private class DynamicallyAddMarkerTask extends AsyncTask {
        @Override
        protected void onPostExecute(Object o) {
            super.onPostExecute(o);
            clusterManager.cluster();
        }

        @Override
        protected Object doInBackground(Object[] objects) {
            LatLngBounds bounds = (LatLngBounds) objects[0];
            clusterManager.clearItems();

            for (LoyaltyOutlet currentMarker : sortedAndFilteredOutlets) {
                if (bounds.contains(currentMarker.getPosition())) {
                    clusterManager.addItem(currentMarker);
                }
            }

            return null;
        }
    }

This is triggered in a OnCameraChangeListener but unfortunately this makes the lib crash my app now and then. Do you think it will possible to fix this issue in the lib by for example just ignoring the exception?
Crash stack trace:
 java.lang.IllegalArgumentException: Released unknown imageData reference
            at com.google.common.base.j.a(Unknown Source)
            at com.google.maps.api.android.lib6.impl.f.c(Unknown Source)
            at com.google.maps.api.android.lib6.impl.ap.a(Unknown Source)
            at com.google.maps.api.android.lib6.impl.ap.remove(Unknown Source)
            at com.google.android.gms.maps.model.internal.IMarkerDelegate$Stub.onTransact(IMarkerDelegate.java:51)
            at android.os.Binder.transact(Binder.java:347)
            at com.google.android.gms.maps.model.internal.zzi$zza$zza.remove(Unknown Source)
            at com.google.android.gms.maps.model.Marker.remove(Unknown Source)
            at com.google.maps.android.MarkerManager$Collection.remove(MarkerManager.java:163)
            at com.google.maps.android.MarkerManager.remove(MarkerManager.java:140)
            at com.google.maps.android.clustering.view.DefaultClusterRenderer$MarkerModifier.removeMarker(DefaultClusterRenderer.java:637)
            at com.google.maps.android.clustering.view.DefaultClusterRenderer$MarkerModifier.performNextTask(DefaultClusterRenderer.java:628)
            at com.google.maps.android.clustering.view.DefaultClusterRenderer$MarkerModifier.handleMessage(DefaultClusterRenderer.java:596)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:176)
            at android.app.ActivityThread.main(ActivityThread.java:5419)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
            at dalvik.system.NativeStart.main(Native Method)

I have to second this issue, looks like synchronization error on clearItems call

I too am struggling with a similar issue. I think the problem comes from your sortedAndFilteredOutlets variable, which retails references to markers that have been removed from the map. They exist outside the map because you keep a reference to them, but otherwise they no longer exist.

Hi all, any idea how to fix it or at least avoid it? I'm struggling to find out why is this happening on my code. It happens every few times you add or clean markers on the map.

The best way I found was to never clear the markers straight from the map itself but from the cluster manager.

Thanks for the tip.
This is how I have it now:
        mClusterManager.clearItems();
        mClusterManager.addItems(mMapVenueItems);
        mClusterManager.cluster();

I'm not really removing them from the map as far as I can tell, just using the cluster manager for that. I do have a list of ClusterItems on the activity, not sure if that could be the source of the problem when manipulating that List.

You must release all copies of markers you don't have on the map when you clear the items. Like if you keep a list of them, clear it too.

I ended up making my own "DefaultClusterRenderer" where the only diffenrence was a lot of try..catch around the areas which made my app crash. Not pretty but gets the job done...

I'm still looking into this so I will try that option as well. It's really annoying the random crashes.

I've just done that and it works fine, I'm not stooping the error just catching it which doesn't seem to cause any further issues. Good enough :)

Had the same issue for marker.setIcon() in an asyncTask. I didn't found any solution yet.. And I'm following @RobertoIDL just catching the error.
If anyone found the solution. please share it here.. I really need it...

I only clear items from ClusterManager, never from the map, and issue is still present. Occurs randomly, usually never on emulator, but on a real device

Have added clusterManager.clear() in onStop, looks like that resolved the issue - probably without that onStop tries to clear items from the map before cluster manager and that results in this bug.
I've checked Google Maps app though, and it looks like they don't restart the activity that displays a map at all.
Do we need to use configurationChanged="orientation" on activities with maps? WIll it help maintain the state?

Update - my fix didn't really work, crash is still there on some of devices

https://code.google.com/p/gmaps-api-issues/issues/detail?id=9871

Looks like I have found another workaround for the issue.
Before doing anything asynchronous with a marker, check clusterManager.markerCollection.markers.contains(marker) and proceed only if it's true - when clustermanager is removing markers for whatever reason, it first removes the marker from this markers array, but it can still fail somehow later removing actual marker from the map.
Additionally, wrap your calls to marker.setIcon() with try/catch of IllegalArgumentException,
and also place this repo as a source library and change this method in MarkerManager.java:
public boolean remove(Marker marker) {
            if (mMarkers.remove(marker)) {
                mAllMarkers.remove(marker);
                try {
                    marker.remove();
                } catch (Throwable t) {
                    t.printStackTrace();
                }

                return true;
            }
            return false;
        }

For anyone else wondering why this may be occurring, here are the exact steps to reproduce the issue

Place few markers to form a cluster.
Zoom in to the map so all markers appears individually on map.
Run an long duration animation on the marker like simple animation changing marker icon
Zoom out so that marker goes back to cluster, invalidating this marker's reference.
Crash occurs with "java.lang.IllegalArgumentException: Released unknown imageData reference". due to animation attempt to update marker.

As per the steps, this seems like a incorrect maps api usage issue.


OAP-Spark  BitSet

OAP 0.3.0 - Spark 2.1.0 API change -   BitSet (until commit 5b63c970bf8f6b)
org.apache.spark.util.collection.BitSet
Before:
After:
Overload BitSet constructor
Reason:
Use an array to initialize BitSet member field.

also add toLongArray() interface.
Since this util class is simple enough, considering fork this to OapBitSet, delete redundant methods from it.

@@ -32,6 +32,15 @@ class BitSet(numBits: Int) extends Serializable {
    */
   def capacity: Int = numWords * 64

+  def toLongArray(): Array[Long] = words
+
+  def this(from: Array[Long]) {
+    this(from.length << 6)
+    for(i <- from.indices) {
+      words(i) = from(i)
+    }
+  }
+
   /**
    * Clear all set bits.
    */

OAP is currently using a wrong version code which is from Spark 2.0.2 instead of 2.1.0

Todo: This change can actually be removed by implementing a BitSet in OAP.

About spark2.3, changes are the same.

Can we change to use BitSet in scala?

scala.collection.mutable.BitSet and scala.collection.immutable.BitSet is slower than Spark's implementation because of safety/bound checking.

Got it ~, @adrian-wang  Is there any suggestion to help us extend org.apache.spark.util.collection.BitSet instead of copy code?

#982 do this work


Feature Request: Templ

https://github.com/a-h/templ
I'm not the biggest fan of Go's template stuff. This package looks way easier to work with.
This would be cool to have it built-in somehow with first-class support in PB.

Sorry but for now there are no plans for this.
I don't understand what do you mean by "first-class support in PB" but there is nothing in PocketBase that prevents to use templ.


StatelessAuthentication on module/application

Hi,
I'm using the StatelessAuthentication per application combined with a aspect-like implementation on modules to authenticate users.
The Func on StatelessAuthenticationConfiguration connects to a database to validate and return a IUserIdentity based on a token retrieved from the request.
On the modules, we have a base implementation that identifies an attribute on the module class and then adds a before to the beforePipeline. Something like, DoNotRequiresAuthenticationAttribute.
So, for all the modules without the attribute we execute a validation based on the context.CurrentUser witch was defined by the StatelessAuthenticationConfiguration func.
The StatelessAuthenticationConfiguration func always executes, cuz it is on application level, but sometimes we dont want it to execute, based on the attribute setted (or not) in the modules.
We chose the StatelessAuthentication per application cuz being on the Bootstrapper allows us to use the Container to resolve classes used to validate the token, witch is not possible with the StatelessAuthentication per module.
Theres a way to retrieve the module type, inside the func from the StatelessAuthenticationConfiguration, from the NancyContext or something like that?

Unfortunately there is no way to get a hold of the module name / type from the request pipeline. The closest you could do is
var resolver =
     requestContainer.Resolve<IRouteResolver>();

var result =
     resolver.Resolve(context);

and then you can access .Route on the result to get some basic information like the method, path and so on.
I will look into adding it to the information, shouldn't be too hard

Had a look at this is a bit tricky to bake in at the moment. The best advice I can give right now is to use the code above and check the route and apply a base-path route naming convention.


Comparison with other libraries

I started a small table, see https://apytypes.github.io/apytypes/comparison.html
However, I also found https://gist.github.com/snhobbs/6441850a39c7c01b34468f9fee6b82a4 which for sure can be used as a base for this (at least the fixed-point part, maybe one should split fixed and floating in separate tables?).

There is also https://github.com/leonardt/hwtypes which isn't exactly a fixed-point library, but one should look into it and see how it works. I think it has bit-accurate floating-point numbers.

Floating-point library: https://github.com/graphcore-research/gfloat


Page templates

As an admin I want to have a template like the one in the drawing (attached) so that I can fill out and constantly update information about our products, services and clients.


Fixes for tests

A number of changes needed to get tests working, and some minor tweaks to make running them under both py2 and py3 easier.
Major changes:

Django updates
requirements updates (pip & tox)
travis updated to ubuntu trusty (14.04) with latest firefox for selenium compatability
tox updated to pull in geckodriver
dropped py2.6 support (no trusty support, many deprecation warnings).

Let me know what you think!

Superseded by changes to master.


Feature request: support parsing comments into data structure so they can be written back out

so we can e.g. use comments in Project.toml's without Pkg removing them.
I found https://github.com/toml-lang/toml/issues/284 which led me to https://github.com/joelself/tomllib (rust, 5 years since the last commit so maybe not supporting TOML v1) and https://github.com/sdispater/tomlkit (python, actively updated) which do support comments.
I wonder what would be involved in doing this? I wonder if a TOMLDict would have to change from just a Dict{String, Any}.

I thought about this but one reason why I didn't attempt this is that the parser here is also used in Julia Base for loading pacakge and there you want it to be as simple as possible.

That makes sense, but it seems a real shame to not allow comments in Project.tomls or things like preference files (though I haven’t used those yet). Maybe Base can use something like a (vendored copy of?) an older version of the package until all the bugs are worked out, eg some kind of LTS release of the package.

There is no strict requirement that Base uses the same parser, no. The first step however is to actually have a TOML parser that produces a "concrete syntax tree". You would need to keep track of comments, indentation, if tables are inline or not etc. Probably a bit tricky to get right.

This is very tricky to do. As @KristofferC says, you'd want to parse a "concrete syntax tree" instead of a simple data structure that is currently returned. But you still want that to behave like a data structure since otherwise you can't access the parsed data. Ok, so maybe you can have a concrete syntax tree type that also behaves like a dict/array/whatever and remembers comments. Does it also allow modification of the data structure? What happens to comments when you modify the data structure? I can come up with messy examples, but I suspect you can see what I'm getting at. The interaction between comments and data structure modification is just super unclear, let alone the implementation. Note that without modification this is a non-issue: if you only need to read a TOML fine and not modify it then preserving comments doesn't matter. That doesn't mean that this is impossible, but before any implementation is considered, the first step is having some reasonable rules about what happens to comments when the TOML data is modified.

Yeah, that makes sense. I was thinking maybe there can be a canonical form that it could be parsed into, so that it wouldn't fully roundtrip with spacing and formatting and everything, but could at least preserve the contents of the comments. E.g. every value in the nested set of dicts is a tuple with the actual value and any comments encountered in the parsing of that value, and they get written out in some canonical way. With something like that, I think modification is more straightforward; either you modify the comment or not, and if you drop the key then you lose the comments. And the dict with tuple values could of course be an AbstractDict that exposes the non-comment element as the tuple as the value for get, getindex etc with some helper to expose the comments.

Another consideration: currently we canonicalize the format of a file when we write the TOML out — we sort table keys and sections. We also convert some ways of expression data structures to other ways of expressing the same data structure. Would this involve not doing that and keeping things in the same order? If so, I'm not sure it's worth it. Keeping the file in a canonical form is really quite nice, IMO.
Maybe we can simplify the scope of this: what kinds of comments did you want to preserve? Some comments are much more obvious how to preserve than others.

FWIW it looks like tomlkit does the full white-space preserving thing in 4k lines of python, which doesn't sound absolutely terrible.

Would this involve not doing that and keeping things in the same order?

Yeah, I don't think it needs to and I don't think it's incompatible with canonicalizing, we just should also parse and canonicalize the comments IMO.

Maybe we can simplify the scope of this: what kinds of comments did you want to preserve? Some comments are much more obvious how to preserve than others.

Hm, I was thinking things like any subtleties in compat annotations or maybe explaining dependencies
name = "MyPkg"
uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
version = "1.0.3"

[deps]
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
# `Dep` is used for fooing bars
Dep = "0796e94c-ce3b-5d07-9a54-7f471281c624"

[compat]
julia = "1"
Dep = "~1.1" # see issue#123 before bumping to v1.2

[extras]
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["Test"]

tomlkit does the full white-space preserving thing

Would be helpful to see what its rules are. Based on your example, it looks like the rule is that a comment on a line by itself is associated with the following item and a trailing comment is associated with the item where it appears. I suspect that access to reading or modifying comments is not worth it: they should be viewed as something that humans insert into the file manually which are only for human consumption.

tomlkit seems to have zero documentation of any of its design decisions for how comments are associated with TOML data, which is not exactly reassuring.

Hmm, maybe there should be a notion of a top-level comment as well? So something like
# this is a "top-level" comment since there is a blank line following it

name = "MyPkg"
uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
version = "1.0.3"
# This comment is attached to the `deps` table since there is no blank line separating it
[deps]
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
# `Dep` is used for fooing bars
Dep = "0796e94c-ce3b-5d07-9a54-7f471281c624"

[compat]
julia = "1"
Dep = "~1.1" # see issue#123 before bumping to v1.2

[extras]
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["Test"]

Ok, now we're getting somewhere. So there seem to be three kinds of standalone comments (as opposed to comments on the same line as or inside of some data):

leading comments: at the beginning of a section with a blank line between the comment and the following item; it will always be printed before any content of that section; if the section is deleted, the comment is too.
trailing comments: at the end of a section after all items in the section, either at the end of the document or with blank lines separating it from the following section; it will always be printed after any content of that section; if the section is deleted, the comment is too.
attached comments: a block of comments with no blank lines between it and the following item — it is attached to that item and will appear before that item when the TOML data is printed and is deleted if the item is deleted.

That still leaves some questions. What about this:
foo = 123
# comment

bar = 456

Is this comment associated with foo or bar? Neither? It looks more attached to foo than bar. What about:
foo = 123

# comment

bar = 456

This comment doesn't look associated with either foo or bar but we have to associate it with one of them if we're going to canonicalize the ordering of our TOML output. If, on the other hand, we preserve item order instead of canonicalizing it, then we could just preserve that this comment comes between foo and bar. That doesn't entirely get us off the hook though: what happens if we insert a value between foo and bar? We have to decide whether the comment comes after foo or before bar. One guess at what would be intuitive is that you count blank lines and associate with the closer item with ties going to the following item. But what about this then:
foo = 123
# 1

# 2

# 3
bar = 456

Do we view this as one big comment block attached to bar? Or is it three separate comments? In which case it seems clear that we'd want to attach comment 1 to foo and comment 3 to bar. But what about comment 2?

Those rules make sense. I wonder though if one could get away without trailing comments? And just have "any top-level comment in the section is canonicalized as a leading comment". So then
foo = 123
# 1

# 2

# 3
bar = 456

would be canoncialized as
# 1
# 2
# 3

foo = 123
bar = 456

And I think the same could be inside a table etc (though maybe this is what you mean by a section). In other words, a comment can either be attached or not, and if it is not attached it shows up at the top of whatever container it is in (the whole TOML file, the table, etc).

We could but eliminating trailing comments doesn't simplify the problem at all: if we decide that comment 2 belongs to foo rather than bar, why not just let it stay where it is? The hard part is deciding which item to associate it with in the first place. Once that's decided, not much is gained by moving it above the item. It would simplify the problem if we either threw an error for an ambiguously placed comment (like comment 2 here) or just deleted it, but I don't think either of those behaviors would be acceptable to people.

We could, but eliminating trailing comments doesn't simplify the problem at all: if we decide that comment 2 belongs to foo rather than bar, why not just let it stay where it is?

Ah, I'm not saying 2 is associated to foo. I'm saying 3 is attached to bar, and no other comments are attached to anything, and all floating comments should just get printed at the top of whatever section they are in.

Ah, ok. That's certainly simple enough. Not sure how people will feel about it though — I suspect that people will feel that this is moving their comments around arbitrarily, but maybe this is fine. I do think that at least inline comments should be supported and remain attached to whatever item they're next to.

Note that rather than modifying TOML to return a special concrete syntax tree data structure, you could instead have a comments = Dict() keyword to the parse functions that populates a data structure with comments. Later when printing TOML back out, you could pass the same data structure and it would be used to emit comments. Not sure what the best structure would be but you would basically just have to make the node path as a tuple of strings to a comment value; becomes a bit more complicated if you want to distinguish different comment placements.

Not sure how people will feel about it though — I suspect that people will feel that this is moving their comments around arbitrarily, but maybe this is fine.

Yeah, I agree it might be seen as annoying. I think however going from "comments get deleted" to "attach your comments like docstrings or they get moved to the top" is a big win and a simple enough rule that I'm hoping folks will just be happy to have comments and quickly learn the rule. Though maybe once we get used to having comments we will want more and more 😅.
But I do think moving is a lot better than deleting (deleting is scary especially if it seems unpredictible, e.g. you don't know the rules, and feels like data loss) so I think some kind of fallback is needed if we don't want to support all positions, and putting them at the top seems simple enough and supports the "intro comment" usage. But maybe there's a better fallback.

Trying the "comments are just a block of text that goes before an element" approach seems like a good idea. I like that it associates just one (multiline) comment string with each node in the TOML data structure. It would transform a comment like this:
foo = 123 # comment

into a comment like this:
# comment
foo = 123

but I think that's ok. Similarly it would turn this:
# comment 1
foo = 123 # comment 2

into this:
# comment 1
# comment 2
foo = 123

I would probably make the API like this:
data, comments = TOML.parsefile(file, comments = true)
TOML.print(io, data, comments = comments)

The comments data structure should probably not be specified as you might want to change it in the future, but a Dict{NTuple{N, String} where N, String} where each key is a tuple of keys in the data structure might work well.


Add missing fields in TransactionDetails

This resolves https://github.com/CodeChain-io/codechain-explorer/issues/72

This issue could be resolved in this PR https://github.com/CodeChain-io/codechain-explorer/issues/128


Abort with argument

It condenses two lines into one being that abort exits with 1.

@JonRowe Do you have any objections on merging this small change?

I'm on the fence due to the change in stdout to stderr

It'd be the same approach as the one already taken on line #6.

Would you wait a bit? We can merge this to the soon-to-be-released RSpec 4.

Having reviewed this further, I don't mind merging this as is, the intent of the original PR was to produce a better output for this error, and that it was to stdout probably didn't occur. @pirj I leave this decision up to you.


Second iteration to bring more APIs and repair tests in WebAssembly

This is a second iteration to address the rest of the issues in https://github.com/hfutrell/BezierKit/pull/107
This PR improves the following things:

Repair tests that should be supported but were failing

CubicCurveTests were failing due to stack overflow caused by deep recursive call of Utils.pairiteration
PolynomialTests.testDegree4RepeatedRoots were failing due to 32bit floating point precision since CGFloat is 32bit on wasm32 where pointer size is 32bit.

Unlock Path.data, Path.init?(data:), Path.hash on WASI
Update CI to use the latest stable SwiftWasm 5.6 toolchain
Add stub implementation of NSCoder encode/decode to satisfy NSCoding requirements, which is activated since 5.6.

Since 5.6 doesn't include Plist support, so cannot provide implementation, unfortunately.

@hfutrell If you could take a look at this, it would be very appreciated :)

Since 5.6 doesn't include Plist support, so cannot provide implementation, unfortunately

I'm a little confused about this. Why is plist support necessary for an implementation? For example instead of encoding a plist the caller may encode it to data, or use binary or XML format.

I'll get to this. In particular though it may be better to keep the failing tests disabled than to adjust them. The adjusted output shown is wrong so it needs to be fixed.

OK, I've disabled them for now. Should we use always Double instead of CGFloat to always operate with 64bit floating point?

Curious. What can 5.6 do with NSCoding without plist support? Can the encoders / decoders do anything useful without it?

It's completely useless now :cry:

@kateinoigakukun thank you for your contribution! It has been merged and made available in release 0.15.0
a couple of notes:
-- I spent some time investigating the recursion issue and I found that there was a problem on 32-bit architectures where recursion was actually happening unnecessarily because of bugged behavior when available precision was exhausted. After fixing that issue I found that https://github.com/hfutrell/BezierKit/commit/16535a82d3f42647ecafc7793ebe75ffa650acb8 was no longer needed to avoid stack overflow in WASM. I therefore reverted this change.
-- I reverted https://github.com/hfutrell/BezierKit/commit/4c0573ac528b969c653fde07b49147dc2e4e6dc2 it didn't allow any failing tests to pass, however changing return values from CGFloat to Double does break source compatibility. We may want to revisit this later.

Thank you :)


How to handle Date

I have a class like that
public init(map: Mapper) throws {
do {
try id = map.from("id")
try firstName = map.from("firstName")
try lastName = map.from("lastName")
try pin = map.from("pin")
try fullName = map.from("fullName")
try active = map.from("active")
try revokePin = map.from("revokePin")
try gender = map.from("gender")
try accountId = map.from("accountId")
try contactNumber = map.from("contactNumber")
//try birthDate = map.optionalFrom("birthDate")
} catch {
throw error
}
}
birthDate is a Date?, how to map?
the framework gives me an error
birthDate = map.optionalFrom("birthDate")
Ambiguous reference to instance method 'optionalFrom'

@jbarros35 I think you would probably need to map to a String first (or Int, depending on how the date is returned from your API) and then convert it to a date.

Likely what you want to do here is define your own custom Convertible conformance for Date. As @sunshinejr alluded to the reason we don't provide one of these is because it depends on how the APIs you're interacting with send this data. Here's an example from our codebase:
import Foundation
import Mapper

extension Date: Convertible {
    public static func fromMap(_ value: Any) throws -> Date {
        if let string = value as? String, let date = self.fromStandardString(string) {
            return date
        }

        throw MapperError.convertibleError(value: value, type: String.self)
    }
}

Where fromStandardString is our custom handler that uses a DateFormatter with a custom dateFormat that our API sends. If this doesn't work for you please let me know!


Sort output of data

Related to this issue is the fact that ditto produces data but when it pushes it up - the ordering isn't maintained and the diff is very large and hard to read - with most of it just being existing content shuffled around.
Ideally we'd like to provide a --sort option to the ditto tool that orders the output of data somehow.

Hmmm now you mention it, what version of python is it running on? Dicts should be ordered by default since like, 3.6 or something?

We are on the python installed here:
https://github.com/PokeAPI/api-data/blob/master/updater%2FDockerfile#L4
Which I think might be the latest.
But not 100% sure. I'll check when I have time

We had this discussion already in the past via email or GH issue, but we couldn't determine why they would get shuffled anyways

Sometimes the data gets scrambled even if there's no modification to it. This isn't the best also for caching purposes.

We could also look into tools that diff JSON files, such as https://github.com/josephburnett/jd


Rename mbed_conf.h to mbed_config.h

Following the pattern of "device_has" to "DEVICE_", "features" to "FEATURE_", the mbed config system should map to mbed_config.h

@mbed-bot: TEST
HOST_OSES=windows
BUILD_TOOLCHAINS=GCC_ARM,ARM,IAR
TARGETS=K64F,KL25Z

@mbed-bot: TEST
HOST_OSES=windows
BUILD_TOOLCHAINS=GCC_ARM,ARM,IAR
TARGETS=K64F,KL25Z

Please read https://github.com/mbedmicro/mbed/pull/1957#discussion_r67345547, where it was proposed. I would go with the full name as here.
cc @bogdanm

Unfortunately we have used mbed_config.h in a different context in the past, see here:
https://github.com/mbedmicro/mbed/blob/master/tools/toolchains/__init__.py#L501
I don't think this previous mechanism was ever really adopted by our users, but keeping it in place is the best option for backward compatibility, I think.

https://github.com/mbedmicro/mbed/commit/1a1dafe44c643000c941ad9fef6bfc55dd22b0c3
Not sure this was ever documented as a feature, at least I cant find anything other than the commit message (and google confirms). I think this would be a safe change to revert given we now have a more complete and documented config system unless you know specifically of user projects using this mechanism.

I don't know of any users of this, no. It was designed to be mbed's "equivalent" to autoconf's config.h and HAS_CONFIG_H, but we never really documented it, and if there are some users of this, they aren't many. I don't have any strong objections against removing it. Also, we might want to keep the idea of defining MBED_HAS_CONFIG_H automatically if a mbed_config,h was generated by the config system.

I don't know of any users of this, no.

Hidden feature :-) Let's use mbed_config.h.

Also, we might want to keep the idea of defining MBED_HAS_CONFIG_H automatically if a mbed_config,h was generated by the config system.

Does Config define a macro like MBED_CONF if it's active and there's at least one config value within the app? That would be sufficient? It does not matter if the config comes via -D or preinclude? I would imagine having MBED_HAS_CONFIG if it would be a regular header so users or us have to include it in the app somewhere:
#ifdef MBED_HAS_CONFIG
#include "mbed_config.h"
#endif

Any other use cases?

Hidden feature :-) Let's use mbed_config.h.

Sure, but then let's also remove the previous logic related to mbed_config.h

Any other use cases?

Not sure. Let's leave it out for now and add it later if needed.

Now has_config is completely removed

@mbed-bot: TEST
HOST_OSES=windows
BUILD_TOOLCHAINS=GCC_ARM,ARM,IAR
TARGETS=K64F,KL25Z


Block space?

Hey there,
is there anyway to prevent spaces in tags? I tried to use :block-keys, but it did not recognise 'Space', 'Spacebar' or 'Space Bar'.
Thank you!

Hi. block-keys only works for selecting and unselecting, currently the keys that can result in that are Enter, Delete and Tab. Unfortunately there is currently no way to disallow certain characters in tags. @shentao are we going to add an option for this?

Of course you may check for spaces in your input handler, but the search phrase with spaces will still show up in multiselect as if it were possible to add that tag.


BROKEN with last version of google-gax

with google-gax 0.15.5
(at least) pubsub publish doesn't work anymore:
16:54:55.000 File "/usr/local/lib/python2.7/dist-packages/google/cloud/pubsub/topic.py", line 249, in publish
16:54:55.000 api = client.publisher_api
16:54:55.000 File "/usr/local/lib/python2.7/dist-packages/google/cloud/pubsub/client.py", line 88, in publisher_api
16:54:55.000 generated = make_gax_publisher_api(self._connection)
16:54:55.000 File "/usr/local/lib/python2.7/dist-packages/google/cloud/pubsub/_gax.py", line 535, in make_gax_publisher_api
16:54:55.000 return PublisherClient(channel=channel)
16:54:55.000 File "/usr/local/lib/python2.7/dist-packages/google/cloud/gapic/pubsub/v1/publisher_client.py", line 188, in __init__
16:54:55.000 page_descriptors=self._PAGE_DESCRIPTORS)
16:54:55.000 File "/usr/local/lib/python2.7/dist-packages/google/gax/api_callable.py", line 361, in construct_settings
16:54:55.000 bundler = _construct_bundling(bundling_config, bundle_descriptor)
16:54:55.000 File "/usr/local/lib/python2.7/dist-packages/google/gax/api_callable.py", line 115, in _construct_bundling
16:54:55.000 bundler = gax.bundling.Executor(gax.BundleOptions(
16:54:55.000 AttributeError: 'module' object has no attribute 'bundling'

@geigerj @lukesneeringer Any ideas?

I can confirm. I have the same issue.

I've the same issue as well.

Thanks guys. If you pin to an older version of google-gax does that fix the issue?

Yes.
Sent from my iPhone

On Feb 13, 2017, at 11:19, Danny Hermes<EMAIL_ADDRESS>wrote:
Thanks guys. If you pin to an older version of google-gax does that fix the issue?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

I will have a fix out as soon as CI completes.

Fixed, and cut 0.15.6

Awesome!
Thanks for jumping on this right away. You definitely improved my Monday.


Add New Screen

Artist info screens
Album details screens
..

Hey @fevziomurtekin Can I work on this issue.

Yeah, sure.


feat: investigate pgbackup

https://github.com/tmiland/pgbackup

Please see #1268 for the winning backup service.  Closing.


rfbrowser init seems to fail when multiple python installs

Describe the bug
More than one report from not finding browsers for example:
Error: browserType.launch: Failed to launch chromium because executable doesn't exist at /***/lib/python3.7/site-packages/Browser/wrapper/node_modules/playwright/.local-browsers/chromium-854489/chrome-linux/chrome

That are fixed by running python -m Browser.entry init although rfbrowser init has already been executed.
This seems to be because we are putting the browsers to custom locations that are inside the python installs.
When rfbrowser init is executed in the wrong python env than where they should be, then we are in trouble.

Yes, this might happen due OS path issues. But using python -m Browser.entry init is documented and closing issue.


fix issue #6934 + add style.justify feature to bitmap texts

Description of change

fix issue #6773
for bitmap texts, add a new option to style.align: 'justify'. for multi-line texts, this will even out the spaces between words, such that the text will be aligned both to the right and the left. (similar to html 'justify' text)

Pre-Merge Checklist

[x] Documentation is changed or added (in code only)
[x] Lint process passed (npm run lint)
[x] Tests passed (npm run test)

Codecov Report

Merging #6954 into dev will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##               dev     #6954   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           15        15
  Lines          671       671
=========================================
  Hits           671       671

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 10983e2...6892618. Read the comment docs.

Hi @saifelse. Thanks for the PR.
I managed to test out justify and it is not working for me: https://jsfiddle.net/bigtimebuddy/ys54rx9z/
Would it be possible to do the roundPixels as a separate PR? I think that would be easier to integrate. Seems like justify needs a little more tuning.

ok. I will prepare a PR for the  roundPixels only, and take a look at your example to see what was wrong.

PR updated. Only bug fix.

Update: the test you gave does not work with pixi at all, regardless of my changes...

That was my bad. I left out the punctuation. Updated the example and it looks good 👍

so, shall i update the PR with the 'justify' feature back, or issue a separate one?

Let's keep them separate.

ok.

Can you reopen?

I have already opened PR for the bug fix: #6965. as soon as it will be merged, I will set a PR for the 'justify' feature. I just don't know how to open both separately, as when I push another fix to my repository, github automatically updates the PR.

Got it :+1:


Reverberation Rod acts as a shield while conducting

The reverb rod's getUseAction() method returns UseAction.BLOCK, which in addition to visually blocking also makes the rod function as a vanilla shield.
To reproduce, inscribe any spell into a reverberation rod and conduct it while being shot with arrows or being attacked by a player wielding an axe. Arrows will be blocked as well as melee attacks, even yielding no cooldown when being attacked with an axe, albeit playing the "guard break" sound effect.

Confirmed that its use of UseAction.BLOCK is the culprit, now testing the other available UseAction options to find one that looks good and doesn't have obvious side effects


Can't login

after downloading the chat-API-NET project and update the WhatsApp version and classes md5 to the last version, I successfully registered a new number but I still can't login to WhatsApp using this project,
I got filed to login.
does this project still work?

Getting same error. password is getting generated but unable to login


Revert "feat(helm): adding kubeconfig flag"

This reverts commit 371ff8f26deaf57556b35dd6c0378950ae07422e.
This PR likely is what caused #3378. We'll have to test this PR manually to confirm.
cc @gardlt

@bacongobbler  This is a breaking change for some people. Can you clarify how users specify kubeconfig location now? It appears its $KUBECONFIG or nothing.

Technically speaking this PR fixes a regression introduced in v2.8.0. I’d be more than happy to get a PR running that fixes it while retaining this feature, but this was the quickest solution to fix v2.8.0 and get a release out the door so we can get feedback on other features introduced in v2.8.0.
In v2.7.2 users were using $KUBECONFIG, yes. This feature flag is new.

Ok great, I didn't notice the feature was so new. Thanks!

@qrevel @torosent does this change fix your problem?

/lgtm
Sorry I didn't check earlier, I only saw this PR when @mattfarina mentioned me.
Thanks for the fix.

@thomastaylor312 @jascott1 not that this has a thumbs up from the person who reported the issue can you do a review. This appears to be the last issue before cutting a 2.8.1 release.


RabbitMQ implementation

A RabbitMQ implementation of MessageQueue just like the one for Redis would be great as a message broker.
Thanks!

This library looks fine: https://github.com/amqp-node/amqplib.

Mbin is indeed also using RabbitMQ. With some technical difficulties sometimes...
here for info:

That being said, if you want to implement RabbitMQ. Here are some generic lessons learned from my side of the story: Be sure to set an expire/ TTL as well as a dead-letter.  Be sure to use queue storage version 2 (instead of the old v1). Do not try to retry too often, do not create big queues (the smaller the queues the better, or expect performance issues).

You should also be able to fork https://github.com/dahlia/fedify-redis and implement the necessary parts to work with RabbitMQ via the aforementioned ampq driver above.

Many users want this.

Created @fedify/amqp.

The benchmark is also updated.


Add unit tests and fix bugs for boolean::BooleanList

After implementing the feature to support missing values. We need to:

Add unit tests for missing values, and at least one new test case per each method/function;
Fix potential bugs introduced by this new feature;

Test file path: /ulist/tests/test_boolean.py

This is duplicated with https://github.com/tushushu/ulist/issues/161


captured characters flashing

happens for links, particularly long ones
https://github.com/lockbook/lockbook/assets/821972/0290e58e-2ec5-414f-91c5-a830e7a92738

dupe #2236


Rancher installation fail

Hi,
To let you know that rancher installation with default rancher and k3s channels now fails.
The pod running rancher helm deploy reports an error on current requirement: kubernetes version < 1.24.0
Current latest k3s version is 1.24.3+k3s1
So to deploy rancher you must enforce  initial_k3s_channel = "v1.23", or earlier!.
BR

Thanks for letting us know @AdZoAi; let's see if Rancher releases a new compatible chart soon enough!

@AdZoAi Support for 1.24 will be added in Rancher 2.6.7, the next release, which hopefully will happen soon. Progress can be seen here https://github.com/rancher/rancher/issues/37727

Will close this as when the new Rancher release drops, it will automatically pick it up. There is nothing else we can do here.


Supabase start is failing with below message.

Applying migration<PHONE_NUMBER>4540_setup.sql...
Applying migration<PHONE_NUMBER>4541_add_profiles.sql...
Applying migration<PHONE_NUMBER>4542_add_workspaces.sql...
Applying migration<PHONE_NUMBER>4543_add_folders.sql...
Applying migration<PHONE_NUMBER>4544_add_files.sql...
Applying migration<PHONE_NUMBER>4545_add_file_items.sql...
Applying migration<PHONE_NUMBER>4546_add_presets.sql...
Applying migration<PHONE_NUMBER>4547_add_assistants.sql...
Applying migration<PHONE_NUMBER>4548_add_chats.sql...
Applying migration<PHONE_NUMBER>4549_add_messages.sql...
Applying migration<PHONE_NUMBER>4550_add_prompts.sql...
Applying migration<PHONE_NUMBER>4551_add_collections.sql...
supabase_edge_runtime_chatbotui container logs:
Download<EMAIL_ADDRESS>Download<EMAIL_ADDRESS>failed to load<EMAIL_ADDRESS>Import<EMAIL_ADDRESS>failed: error sending request for url (https://deno.land/std@0.182.0/http/server.ts): error trying to connect: invalid peer certificate: UnknownIssuer
Error: main worker boot error: worker boot error
service not healthy: [supabase_edge_runtime_chatbotui]
Try rerunning the command with --debug to troubleshoot the error.

What was the fix for this? I have the exact same problem.

I have this same problem. Can someone please provide some guidance on how to fix?


Bonsai Trees 3

The mod is not loading correctly.
All I see is the "Bonsai Pot" but I don't see the Hoppered Bonsai Pot. I downloaded the version: bonsaitrees3-3.1.0.jar.
I'm using Forge version: 40.1.70
Please help...
Thank you.
James
![Bonsai Pots]
(https://user-images.githubusercontent.com/75158080/191877052-e572a8fb-5468-4b63-8935-2d07d9a8f0a8.jpg)

im having the exact same issue if you found a way to get it in your game please let me know

i believe you have to put a hopper in the gui on the bonsai pot


Added GE Generate Expectation Suite and GE Run Expectation Suite steps

Please include answers to these questions as part of your pull request
In the GitHub webUI, use the Write tab to modify the Markdown text that is part of the pull request. For each question simply place an X inside the square brackets, [X], that represents your answer. Make sure there are no blanks inside the brackets, otherwise MarkDown doesn't render properly. Using the Preview tab while editing this form, you can see the formatted/rendered version of the message.

Q1: Confirm that you have the right to submit the code that is being contributed. Please consider the origin of your code and confirm you have the appropriate rights to make the submission subject to the Apache 2.0 license that applies to everything in this repository of custom steps. If so, follow the instructions for the Contributor Agreement (which is based on the industry-standard Developer Certificate of Origin (DCO)).

[X] Yes, I have the right to submit the contributed code on behalf of myself, my company, or any other owner of the code. I have also attached my signed copy of the DCO to this message.
[ ] No

Q2: Confirm that your contribution does not include any personally identifiable information (PII), for example, in any examples used in your README file.

[X] My contribution does NOT include PII data
[ ] My contribution includes PII data

Q3: Confirm your contribution does not include any encryption or other export-controlled technology.

[X] My contribution does NOT contain encryption or other export-controlled technology
[ ] My contribution includes encryption or other export-controlled technology

ContributorAgreementMackenzieLooney.txt

11OCT2023: Starting review

@mackloon , thanks for the updates. I will merge the current version, but still wondering why subsetting the input table directly when calling the SAS.df2sd() callback method in proc python is not used. As this call is part of proc python, you can use dataset options when specifying the table name.
Here is some sample SAS code:
proc print data=sashelp.class(keep=name age sex where=(age<14));
run;

And something very similar in proc python, only loading a subset of the data into the Pandas Dataframe
proc python;
submit;
dfClass = SAS.sd2df("sashelp.class(keep=name age sex where=(age<14))");
print(dfClass)
endsubmit;
run;

SAS Internal Due Diligence Review - COMPLETED on 16OCT2023.


vs2019: Add the preset visual studio project

This is a compilable vs project to generate library for the fan of visual studio.
Still, there are a lot of compile warnings, it works to generate working dll and lib.

Hmm, meson can create a VS solution. I use this with meson 0.63.0:
rm -rf builddir_vs

meson setup builddir_vs \
      --backend vs \
      --vsenv \
      --prefix=/opt/thor_64 \
      --buildtype=debug \
      --default-library shared \
      -Dvector=true

note that --vsenv works correctly with a recent meson.
About __max, what about using std::max ?

Hmm, meson can create a VS solution. I use this with meson 0.63.0:
rm -rf builddir_vs

meson setup builddir_vs \
      --backend vs \
      --vsenv \
      --prefix=/opt/thor_64 \
      --buildtype=debug \
      --default-library shared \
      -Dvector=true

note that --vsenv works correctly with a recent meson.
About __max, what about using std::max ?

@vtorri Good. tip! and any issues on __max() ?

about __max, no issue afaics. It's just that std::max removes a #ifdef

about __max, no issue afaics. It's just that std::max removes a #ifdef

std::max makes sense to me.

Hmm, meson can create a VS solution. I use this with meson 0.63.0:

wow Thank you for good information. I don't think this PR is needed anymore. :)

About __max, what about using std::max ?

I think this should be handled in a new PR, not this pr :)


API - mowing doesn't start

Hello
I seem to have an issue when using the API where the mower doesn't start its undocking and just sticks to charging/docked.
I send this sequence of mqtt messages to cassandra:

set mow parameters
load a map
give the mow command
It often happens: where the state goes to 1) map upload 2) mow 3) back to charging, so it didn't leave his docking station.
This is not a 100% repetitive behaviour, so same commands starts the undocking and mowing in a lot of cases.

If I do the same set of commands through the "manual buttons" in Cassandra, I've never had this situation and it just starts its undocking process guaranteed.
Here you can see state going from charging to upload to mow to docked:

A log of such an event is attached
test.log
the mqtt commands I execute are: 1) setting the mow parameters 2) loading the map 3) giving the mow command (with or without a selection pending which day it is).

Ok, I think the problem is the time between map load and mow all command. Cassandra is still changing the map and you command to mow something what isn't available anymore. That is problem in the architecture of Cassandra what I will fix in future. I will send busy to status topic if Cassandra doing some important stuff. And won't accept other commands in this state.
As workaround for you try to add some delay between both commands (30s?) depends on how complex is your map

Ok thanks, I'll check it out tomorrow.
When making the automations, I had the impression the map-upload process only starts after sending the mow command. Was that wrong?

To the robot yes, but Cassandra need some calculation for path planning before. It is done once after switching the map.
If you use different tasks instead of different maps then you shouldn't run in this problem

Adding the long delay seems to work fine the last several days :)


Update ARProcess and InfectionInitializationProcess to handle batched input

Currently, ARProcess and InfectionInitializationProcess (and possibly others) require scalar inputs which prevents these from being used with numpyro.plate.
This emerged while trying to use numpyro.plate to calculate site-level dynamics for each site in https://github.com/CDCgov/pyrenew-covid-wastewater/issues/7
I am also open to other possible ways of handling this and maybe worth having a discussion about the best way to do it. For reference, I tried using a for loop but that required modifying the name arguments of RandomVariables. @dylanhmorris mentioned potentially using jax.lax.scan

Minimal reproducible example? Which inputs are causing plate to object?

Also, what if you define the instatiate the process outside the plate but sample() within the plate?

numpyro.plate vectorizes noise_sd for the "plate size" (not sure if this is the correct term) but ARProcess expects noise_sd input to be a scalar

This reproduces the issue with using ARProcess
import numpyro
from pyrenew.process import ARProcess
from pyrenew.randomvariable import DistributionalVariable
from pyrenew.metaclass import Model
import numpyro.distributions as dist

class my_model(Model):
    def __init__(
            self,
            autoreg_rt_site_rv,
            sigma_rt_rv,
            rtu_site_ar_proc,
            ):

        self.autoreg_rt_site_rv = autoreg_rt_site_rv
        self.sigma_rt_rv = sigma_rt_rv
        self.rtu_site_ar_proc = rtu_site_ar_proc

    def validate(self):
        pass

    def sample(self, n_weeks):
        with numpyro.plate("subpop", 5):
            autoreg_rt_site =self.autoreg_rt_site_rv()[0].value
            sigma_rt = self.sigma_rt_rv()[0].value

            rtu_site_ar_init_rv = DistributionalVariable("rtu_site_ar_init",dist.Normal(0,1))

            rtu_site_ar_init = rtu_site_ar_init_rv()[0].value

            rtu_site_ar_weekly = self.rtu_site_ar_proc(
                n=n_weeks,
                init_vals=rtu_site_ar_init,
                autoreg=autoreg_rt_site,
                noise_sd=sigma_rt,
            )
            return rtu_site_ar_weekly

autoreg_rt_site_rv = DistributionalVariable("autoreg_rt", dist.Beta(1,1))
sigma_rt_rv = DistributionalVariable("sigma_rt", dist.TruncatedNormal(1,1,low=0))
rtu_site_ar_proc = ARProcess(noise_rv_name="rtu_ar_proc")

model1 = my_model(autoreg_rt_site_rv,sigma_rt_rv,rtu_site_ar_proc)

with numpyro.handlers.seed(rng_seed=5):
    model1.sample(n_weeks=10)

one line error summary
## ValueError: noise_sd must be a scalar. Got [0.40856445 0.3173288  1.530092   0.78180265 1.627873  ]

This is blocking https://github.com/CDCgov/pyrenew-covid-wastewater/issues/7

Suggest splitting this into sub-issues for the two RV classes.

Maybe a second numpyro.plate is needed here for timepoint?

For the warning, wo/ with numpyro.plate("timepoint", n_timepoints): above
mean_infec = i0 * jnp.exp(
    rate * jnp.expand_dims(jnp.arange(n_timepoints), 1)
)
numpyro.sample("obs", dist.Poisson(mean_infec), obs=y)

out:
db_plate_eg.py:30: UserWarning: Missing a plate statement for batch dimension -2 at site 'obs'. You can use `numpyro.util.format_shapes` utility to check shapes at all sites of your model.
  mcmc.run(rng_key, y=y_data)
sample: 100%|████████████████████████████████████| 1500/1500 [00:01<00:00, 1042.99it/s, 63 steps of size 6.52e-02. acc. prob=0.89]

                mean       std    median      5.0%     95.0%     n_eff     r_hat
     i0[0]      1.00      0.06      1.00      0.91      1.09    472.95      1.00
     i0[1]      1.99      0.11      1.99      1.80      2.16    394.08      1.00
     i0[2]      2.96      0.13      2.96      2.75      3.17    524.65      1.00
   rate[0]      1.10      0.01      1.10      1.09      1.11    466.99      1.00
   rate[1]      1.01      0.01      1.01      1.00      1.02    401.20      1.00
   rate[2]      1.00      0.01      1.00      0.99      1.01    528.82      1.00

Number of divergences: 0

and w/ the with numpyro.plate("timepoint", n_timepoints):
sample: 100%|████████████████████████████████████| 1500/1500 [00:01<00:00, 1127.89it/s, 63 steps of size 6.52e-02. acc. prob=0.89]

                mean       std    median      5.0%     95.0%     n_eff     r_hat
     i0[0]      1.00      0.06      1.00      0.91      1.09    472.95      1.00
     i0[1]      1.99      0.11      1.99      1.80      2.16    394.08      1.00
     i0[2]      2.96      0.13      2.96      2.75      3.17    524.65      1.00
   rate[0]      1.10      0.01      1.10      1.09      1.11    466.99      1.00
   rate[1]      1.01      0.01      1.01      1.00      1.02    401.20      1.00
   rate[2]      1.00      0.01      1.00      0.99      1.01    528.82      1.00

Number of divergences: 0

Modified, for no warning:
def my_model(y):
    with numpyro.plate("subpop", n_subpops):
        rate = numpyro.sample("rate", dist.HalfNormal())
        i0 = numpyro.sample("i0", dist.HalfNormal())
        with numpyro.plate("timepoint", n_timepoints):
            mean_infec = i0 * jnp.exp(
                rate * jnp.expand_dims(jnp.arange(n_timepoints), 1)
            )
            numpyro.sample("obs", dist.Poisson(mean_infec), obs=y)

Thanks @AFg6K7h4fhy2. I'm glad we have something working without a warning, but this all feels a bit funny to me. In particular, it seems like we should be able to come up with a solution that doesn't require the time series to be of equal length.

Thanks @AFg6K7h4fhy2. I'm glad we have something working without a warning, but this all feels a bit funny to me. In particular, it seems like we should be able to come up with a solution that doesn't require the time series to be of equal length.

Agree. I'm not going to investigate the dim= option right now, but hopefully there is something there that supports our ends better.

After discussing with @dylanhmorris, we plan to avoid working with ragged arrays and indexing and implement solutions with broadcasting instead.

After discussing with @dylanhmorris, we have agreed on

Models should accept tidy data. (Ex: time, location, count columns)
Internal replication of model components should be achieved with numpyro.plates (Ex with numpyro.plate("location", n_locations).
Latent computations should be done internal to plates and/or using broadcasting when possible. This may result in cases where we compute "unused" variables (Ex. location 1 has observations at 20 timepoints and location 2 has observations at 10 timepoints. We will compute the full latent time series for both locations).
Observation samples should occur outside of plates using indexing based on the tidy data.

Updated example based on above recommendations is below. A bit unclear about what this implies for the rest of PyRenew. I think we may need to stick in some atleast_1d calls throughout.
import jax.numpy as jnp
import numpy as np
import numpyro
import numpyro.distributions as dist
from jax import random
from numpyro.infer import MCMC, NUTS
import polars as pl
import string

n_groups = 4
rates = 1 + jnp.pow(10.0, -(jnp.arange(n_groups) + 1))
n_timepoints = jnp.arange(n_groups) + 10
i0s = jnp.arange(n_groups) + 1

input_data = pl.DataFrame(
    {
        "group": pl.Series(np.array(list(string.ascii_lowercase))[
            np.repeat(np.arange(n_groups), n_timepoints)
        ], dtype = pl.Categorical),
        "time": np.concatenate(
            [np.arange(n_timepoint) for n_timepoint in n_timepoints]
        ),
        "obs": np.concatenate(
            [
                i0 * np.exp(rate * np.arange(n_timepoints))
                for rate, i0, n_timepoints in zip(rates, i0s, n_timepoints)
            ]
        ),
    }
)#.filter(~((pl.col("group") == "a") & (pl.col("time") == 4)))

y_group = input_data["group"].to_numpy()
y_time = input_data["time"].to_numpy()
y_obs = input_data["obs"].to_numpy()

# This would be done at modle instantiation:
y_group_ind = input_data["group"].to_physical().to_numpy()
y_time_max = input_data["time"].max()

def my_model(y_group, y_time, y_obs):
    with numpyro.plate("group", n_groups):
        rate = numpyro.sample("rate", dist.HalfNormal())
        i0 = numpyro.sample("i0", dist.HalfNormal())
        mean_infec = i0 * jnp.exp(rate * jnp.arange(y_time_max+1)[:, jnp.newaxis])

    numpyro.sample("obs", dist.Poisson(mean_infec[y_time, y_group]), obs=y_obs)

# Posterior Sampling
nuts_kernel = NUTS(my_model, find_heuristic_step_size = True)
mcmc = MCMC(nuts_kernel, num_warmup=500, num_samples=1000)
rng_key = random.PRNGKey(0)
mcmc.run(rng_key, y_group = y_group_ind, y_time = y_time, y_obs = y_obs)

# Check results
mcmc.print_summary()

Infection initialization process handled by #432, correct @damonbayer? Or does InitializeInfectionsZeroPad also need reworking etc?

Was the Infection initialization process part of this issue handled by #432, @damonbayer? Or do other initialization schemes such as InitializeInfectionsZeroPad also need reworking?

It's a non-trivial fix. I would like to first consider removing the InfectionInitializationMethod class and the InitializeInfectionsFromVec and InitializeInfectionsZeroPad functions.

I think the initialize functions should just be RandomVariables. There shared interface was not very elegant and somewhat confusing. InitializeInfectionsFromVec can just be a DeterministicVariable.

Partially closed by https://github.com/CDCgov/PyRenew/pull/432

Fully closed by https://github.com/CDCgov/PyRenew/pull/439


Frontend - Add Footer

Subject of the issue
Add a footer on the angular App with legal mention and app version.
Mention legal : Copyright © 2018, Suricate.io. All rights reserved.
Issue type
[] Bug
[] Improvment
[] Documentation
[x] Feature

Hi, I'm new to open source and was wondering if I could take this on, or let me know if there are any other features you might want. Thanks!

Hi
Of course you can. Just fork project and push a PR.
Just to know, version must be based on package.json information not hard coded in a .ts file.
Feel free to take any feature you may be interested in, that the spirit of open source 👍

Okay cool, just to clarify, where should the location of the Footer component be?
Should it be in src/app/shared/components?
Just making sure that I am actually helping out, thanks!

Yes it sounds good, create a pages-footer like we did for header for instance

Also, @AlexErling we just merge a PR where we add environment management, it could be cool to also add environment information in that footer :)

Okay, I will get on that. I've added a footer section, but I am having trouble getting maven installed for the backend.
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project monitoring: Fatal error compiling: java.lang.ExceptionInInitializerError: com.sun.tools.javac.code.TypeTags -> [Help 1]

Do you have any thoughts on how I can get this one going? Once I get it up and running then the rest shouldn't be too difficult.

Which java version are u running on ? We tested with 8, lower won't work cause of lambdas, higher can have side effect
@Juyoo : Any idea ?

I assume you'r trying to run the project with JDK 9.
The maven compiler plugin is not compatible with JDK 9 under the version 3.7.0 (and we are under 3.1.0 version).
As @yodamad said try to run it with the JDK 8.

Okay, thanks! I will see if I can get it to work.

Okay, I can see stuff now. I have built out the footer component. Now I am confused where I should put the . Is it supposed to go in the app.component.html? Any hints? Also, what environment information would want to add so I can put that in? Thanks for helping me out.
Currently I have:
pages-footer.component.ts
import { Component, OnInit } from '@angular/core';
import { environment } from '../../../../environments/environment';

@Component({
  selector: 'app-pages-footer',
  templateUrl: './pages-footer.component.html',
  styleUrls: ['./pages-footer.component.css']
})
export class PagesFooterComponent implements OnInit {

  public version: string = environment.VERSION;

  constructor() { }

  ngOnInit() {
  }

}

and

pages-footer.component.html:
Version {{version}} Copyright © 2018, Suricate.io. All rights reserved.

Open a PR with your implementation, it will be easier to give you feedback directly in the code (if necessary)
Concerning environnement, just add for instance "Version {{env}} {{version}} ...."


Thanks!

@kevspadilla
You have already opened two issue reports, have added your question in the chat to two channels and also in the forum.
Please use one and not all locations! And for questions always the chat or the forum.
Thanks!

@froschdesign, sorry my bad.


Project state?

Hi!
I'd just like to ask what the current state of the project is? It does what it's supposed to, but I'd like to know if it is still actively used / if it is maintained. The fork acme-dns-tiny seems a lot more active...
Thanks for this script! I haven't found anything similar to it, and I love that it doesn't use any external packages.

Hi,
i am in no way related to this project other than i am a user of this software. But in general i would recommend measuring the quality of a project on the basis of known open bugs and number of users [1]. The absence of known bugs might very well be a sign of very good quality.
Since it's a project gratis to use, i would not recommend measuring based on it-support (like giving a quick answer to this github issue) or perceived lack of feature-development [2].
just my two cents, cheers!
~~ qyanu
[1] For the operating system of my choice, popcon gives a very biased view into the number of users: https://qa.debian.org/popcon.php?package=acme-tiny
bias includes, that popcon is probably not installed on most hosts running debian; and that maybe some users use other installation methods besides the package.
[2] for example, the unix utility cp does receive very little new features per year. however, it's still a software very useful for its stated purpose.

I completely understand and agree with what you're saying. The thing is that bugs can crop up at any time, maybe the ACME protocol changes, maybe Let's Encrypt starts doing something differently, so I just wanted to know if the project isn't abandoned... if I can reasonably count on it getting updated when something happens.
If not, that's completely fine, and I am still grateful that it is available for free :)

Yes, i understand and i see a small risk in that. My solution is to have good monitoring in place. And if for some reason the certificates don't get renewed in time, i still have like 7 days to do a quick&dirty-fix and then a real solution.
Monitoring of the SSL-certs need to be done anyways, since any configuration in any component might suddently fail.
However, i observe a reasonable github-issue activity on this project anyways -- so no worries (except maybe when the acme-protocol changes in a big way, but this will distrupt any other software as well).

Just to chime in here. I still use this project for many servers that I run, and if there is ever a breaking change by Let's Encrypt to cause acme-tiny to stop working, I'll patch it and release a new version. So in that sense, it's still actively maintained.
I just haven't focused on adding new features or expanding scope since it does what I need it to do for my projects. I totally encourage others to fork or add their own features (like @Trim with acme-dns-tiny), and maybe one day I'll dedicate some time to revisiting some of the features or changes that folks have proposed over the years.


[Bug]: Response is Empty

Bug Description
https://github.com/run-llama/llama_index/blob/b7188a3423e094b509cda5845cbc04e83f99f144/llama_index/llms/huggingface.py#L278 on this line you are trimming predicted tokens with inputs["input_ids"].size(1), but that is trimming all the predictions and hence I am getting empty response
Version
0.8.68
Steps to Reproduce
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
from llama_index.llms import HuggingFaceLLM
model = AutoModelForSeq2SeqLM.from_pretrained("google/flan-t5-large")
tokenizer = AutoTokenizer.from_pretrained("google/flan-t5-large")
hug_llm = HuggingFaceLLM(model=model, tokenizer=tokenizer)
prompt =
"""'Answer based on context:\n\nI learned some useful things at Interleaf, though they were mostly about what not to do. I learned that it's better for technology companies to be run by product people than sales people (though sales is a real skill and people who are good at it are really good at it), that it leads to bugs when code is edited by too many people, that cheap office space is no bargain if it's depressing, that planned meetings are inferior to corridor conversations, that big, bureaucratic customers are a dangerous source of money, and that there's not much overlap between conventional office hours and the optimal time for hacking, or conventional offices and the optimal place for it.\n\nBut the most important thing I learned, and which I used in both Viaweb and Y Combinator, is that the low end eats the high end: that it's good to be the "entry level" option, even though that will be less prestigious, because if you're not, someone else will be, and will squash you against the ceiling. Which in turn means that prestige is a danger sign.\n\nWhat happened at interleaf?'
"""
hug_llm.complete(prompt)
Relevant Logs/Tracbacks
No response

@shivanandmn this line of code works fine in LLMs I've tested.
HuggingFace LLMs that I've tested all output the original text PLUS predicted text. This code is trimming it so only predicted text is returned.
The only LLM I can see this being an issue with is something like T5, since its encoder-decoder and not decoder only. What LLM are you using?

Currently I am trying to use custom like this
class CustomHuggingFaceLLM(HuggingFaceLLM):
    @llm_completion_callback()
    def complete(self, prompt: str, **kwargs: Any) -> CompletionResponse:
        """Completion endpoint."""
        full_prompt = prompt
        is_formatted = kwargs.pop("formatted", False)
        if not is_formatted:
            if self.query_wrapper_prompt:
                full_prompt = self.query_wrapper_prompt.format(query_str=prompt)
            if self.system_prompt:
                full_prompt = f"{self.system_prompt} {full_prompt}"

        inputs = self._tokenizer(full_prompt, return_tensors="pt")
        inputs = inputs.to(self._model.device)

        # remove keys from the tokenizer if needed, to avoid HF errors
        for key in self.tokenizer_outputs_to_remove:
            if key in inputs:
                inputs.pop(key, None)

        tokens = self._model.generate(
            **inputs,
            max_new_tokens=self.max_new_tokens,
            stopping_criteria=self._stopping_criteria,
            **self.generate_kwargs,
        )
        completion = self._tokenizer.decode(tokens[0], skip_special_tokens=True)

        return CompletionResponse(text=completion, raw={"model_output": tokens})

Is this okay?


Port "Monoid newtypes"

from https://github.com/obsidiansystems/dependent-sum/pull/37

I've opened a PR as #30.

Won't port. As commented in #30:

There is canonical Applicative f => Monoid (Some f) instance already. Use either Backwards or Dual to reverse it. Looks like I arrived to the same conclusion as in obsidiansystems/dependent-sum#37 (comment)


Investigate debugging and sourcemaps in SSR

Does debugging work at all for SSR in Vite?

This is now supported in<EMAIL_ADDRESS>with rakkas dev --use-loader. Refer here for more info.