U-Grid for finite element models (node centered)

We produce FE models from Telemac 3D. I am trying to transform the slf files produced into a Xarray following CF and UGrid.
However, it seems that the case of such grid is not really treated.
To build the model, we have a 2D unstructured grid base with nlayers. However, the layers are not sigmas, each node carries the property of their altitude.
I am a bit confused how to include the Z attribute within U-Grid convention.

Should I recompute everything in sigmas and add a surface and bottom of the ocean? That seems a bit useless when you actually have the z of each node.

Should I make 2 sets of node coordinates, one with xy and one with xyz?

In U-Grid, it seems that the edge parameter is needed for unstructured 3D grids with layers whereas it doesn't really have any geometrical interest to build the structure and it is not an information available in a slf file. With VTK for example, you only need the volume connectivity, volume type and the coordinates of the nodes.
All this to say that I am a bit confused on how to include this type of layered unstructured grids

For the most part, UGRID only concerns itself with the two-D grid. it does not store node in 3D.
This is due to the fact that oceongraphic models usually use a totally separate approach for the vertical, which it sounds liked is the case for telemac.
Because of this, UGRID doesn't specify how you have to handle the vertical dimension, and rather, expects you to do that the same way you would for structured grids, using the CF conventions.
If all the examples are using sigma coords, we apologize -- that's not a requirement.

Hi Julien,
As indicated by Chris, you can indeed covert the 2D triangular grid to the UGRID format and use a nnodes x nlayers x ntimes array for the vertical coordinate that you associate with a standard name "altitude". That should mostly cover the Telemac case. The 3D version of Telemac will store 6 point indices per prism-shaped elements, but second 3 are just located above the first 3, so you can just store the first 2D slice.
UGRID doesn't require you to specify indices for the edges. They are only required if you want to store data on the edges. Finite volume models tend to have velocity components at those locations, but CG finite elements models not. The the (horizontal) "node" coordinates and the "face_node_connectivity" should be sufficient to store the basic mesh, and then you supplement that with the 3D vertical coordinates and the other data. For all quantities you would include the UGRID "mesh" and "location" attributes pointing to the UGRID mesh variable (2D) and "NODE" location thereof, and the vertical coordinate is linked via the CF "coordinates" attribute.
Bert

Thanks Bert.
@Boorhin: When you get this worked out, it would be great to put it somewhere as an example. We have an example dir in this repo with exactly one example -- more would be great!
-CHB

This is my attempt...
https://github.com/Boorhin/Telemac3D_to_xarray

Is that what you are looking for as an example?
ncdump -h netcdf_dump.nc
netcdf netcdf_dump {
dimensions:
	time = 1465 ;
	siglay = 6 ;
	node = 112015 ;
	face = 198364 ;
	max_face_nodes = 3 ;
	layer = 6 ;
	cell = 991820 ;
	max_cell_node = 6 ;
variables:
	float Altitude(time, siglay, node) ;
		Altitude:_FillValue = NaNf ;
		Altitude:grid_mapping = "crs" ;
		Altitude:units = "M" ;
		Altitude:coordinates = "node_x node_y" ;
	int64 Mesh2D ;
		Mesh2D:cf_role = "mesh_topology" ;
		Mesh2D:face_dimension = "face" ;
		Mesh2D:face_node_connectivity = "face_nodes" ;
		Mesh2D:long_name = "Topology data of 2D unstructured mesh" ;
		string Mesh2D:node_coordinates = "node_x", "node_y" ;
		Mesh2D:topology_dimension = 2LL ;
	int64 crs ;
		crs:false_easting = 500000LL ;
		crs:false_northing = 0LL ;
		crs:grid_mapping_name = "WGS 84 / UTM zone 30N" ;
		crs:inverse_flattening =<PHONE_NUMBER>6 ;
		crs:latitude_of_projection_origin = 0LL ;
		crs:longitude_of_central_meridian = 3LL ;
		crs:scale_factor_at_central_meridian = 0.9996 ;
		crs:semi_major_axis = 6378137. ;
	int64 face_nodes(face, max_face_nodes) ;
		face_nodes:cf_role = "face_node_connectivity" ;
		face_nodes:long_name = "Maps every triangular face to its three corner nodes" ;
		face_nodes:start_index = 0LL ;
	float horizontal_diffusivity(time, siglay, node) ;
		horizontal_diffusivity:_FillValue = NaNf ;
		horizontal_diffusivity:grid_mapping = "crs" ;
		horizontal_diffusivity:units = "M2/S" ;
		horizontal_diffusivity:coordinates = "node_x node_y" ;
	int64 layer(layer) ;
	float node_x(node) ;
		node_x:_FillValue = NaNf ;
		node_x:axis = "X" ;
		node_x:standard_name = "projection_x_coordinate" ;
		node_x:units = "m" ;
	float node_y(node) ;
		node_y:_FillValue = NaNf ;
		node_y:axis = "Y" ;
		node_y:standard_name = "projection_y_coordinate" ;
		node_y:units = "m" ;
	float ocean_vertical_diffusivity(time, siglay, node) ;
		ocean_vertical_diffusivity:_FillValue = NaNf ;
		ocean_vertical_diffusivity:grid_mapping = "crs" ;
		ocean_vertical_diffusivity:units = "M2/S" ;
		ocean_vertical_diffusivity:coordinates = "node_x node_y" ;
	float sea_water_salinity(time, siglay, node) ;
		sea_water_salinity:_FillValue = NaNf ;
		sea_water_salinity:grid_mapping = "crs" ;
		sea_water_salinity:units = "JOULE/KG" ;
		sea_water_salinity:coordinates = "node_x node_y" ;
	float sea_water_temperature(time, siglay, node) ;
		sea_water_temperature:_FillValue = NaNf ;
		sea_water_temperature:grid_mapping = "crs" ;
		sea_water_temperature:units = "WATT/KG" ;
		sea_water_temperature:coordinates = "node_x node_y" ;
	int64 time(time) ;
		time:axis = "T" ;
		time:long_name = "time" ;
		time:standard_name = "time" ;
		time:units = "hours since 1972-07-13T17:15:00" ;
		time:calendar = "proleptic_gregorian" ;
	float turbulent_kinetic_energy(time, siglay, node) ;
		turbulent_kinetic_energy:_FillValue = NaNf ;
		turbulent_kinetic_energy:grid_mapping = "crs" ;
		turbulent_kinetic_energy:units = "M2/S" ;
		turbulent_kinetic_energy:coordinates = "node_x node_y" ;
	float upward_sea_water_velocity(time, siglay, node) ;
		upward_sea_water_velocity:_FillValue = NaNf ;
		upward_sea_water_velocity:grid_mapping = "crs" ;
		upward_sea_water_velocity:units = "M/S" ;
		upward_sea_water_velocity:coordinates = "node_x node_y" ;
	int64 volume_node_connectivity(cell, max_cell_node) ;
		volume_node_connectivity:cf_role = "volume_node_connectivity" ;
		volume_node_connectivity:long_name = "Maps every volume to its corner nodes." ;
		volume_node_connectivity:start_index = 0LL ;
	float x_sea_water_velocity(time, siglay, node) ;
		x_sea_water_velocity:_FillValue = NaNf ;
		x_sea_water_velocity:grid_mapping = "crs" ;
		x_sea_water_velocity:units = "M/S" ;
		x_sea_water_velocity:coordinates = "node_x node_y" ;
	float y_sea_water_velocity(time, siglay, node) ;
		y_sea_water_velocity:_FillValue = NaNf ;
		y_sea_water_velocity:grid_mapping = "crs" ;
		y_sea_water_velocity:units = "M/S" ;
		y_sea_water_velocity:coordinates = "node_x node_y" ;

// global attributes:
		:Conventions = "CF-1.6" ;
		:history = "Created 2021-12-08 17:00:46.958517" ;
		:original\ file = "/media/julien/NuDrive/Consulting/The NW-Edge/Oceano/Loch Hourn/Final_mesh.slf" ;
		:proj4 = "+proj=utm +zone=30 +datum=WGS84 +units=m +no_defs " ;
		:source = "Telemac 3D" ;
		:standard_name_vocabulary = "CF-1.6" ;
		:title = "TELEMAC 3D: Loch Hourn                                                  SERAFIN " ;

yes, that's the idea.
When you think it's done, could you submit it as a PR on this repo?
I haven't looked at it too closely yet, but a couple notes from a glance.
netcdf netcdf_dump {
dimensions:
	time = 1465 ;
	siglay = 6 ;

there is nothing in the spec about what dimension names to use -- if your model isn't using sigma layers, it's probably less confusing to use a different name -- z_layers or ?

	node = 112015 ;
	face = 198364 ;
	max_face_nodes = 3 ;
	layer = 6 ;

what's the layer dimension for -- different than siglay?

	cell = 991820 ;
	max_cell_node = 6 ;
variables:
	float Altitude(time, siglay, node) ;
		Altitude:_FillValue = NaNf ;
		Altitude:grid_mapping = "crs" ;

is the CRS relevant here? that is, is this relative to the earth, or to the model's reference frame?

		Altitude:units = "M" ;
		Altitude:coordinates = "node_x node_y" ;

I'm a little confused as to whether coordinates are called for here. In the UGRID case, that's usually used to make it easy to, say, plot a variable.

	float horizontal_diffusivity(time, siglay, node) ;
		horizontal_diffusivity:_FillValue = NaNf ;
		horizontal_diffusivity:grid_mapping = "crs" ;

I'm a little hazy on where a CRS is called for, but as this has no lat-long coords, I don't' think it'e needed here.

		horizontal_diffusivity:units = "M2/S" ;
		horizontal_diffusivity:coordinates = "node_x node_y" ;
	int64 layer(layer) ;

I think you may want the vertical coord here too. maybe:

		horizontal_diffusivity:coordinates = "Altitude, node_x node_y" ;

	float node_x(node) ;
		node_x:_FillValue = NaNf ;
		node_x:axis = "X" ;
		node_x:standard_name = "projection_x_coordinate" ;
		node_x:units = "m" ;
	float node_y(node) ;
		node_y:_FillValue = NaNf ;
		node_y:axis = "Y" ;
		node_y:standard_name = "projection_y_coordinate" ;
		node_y:units = "m" ;

Shouldn't these get the CRS info? again, I'm not really clear on that. This is a DF thing, not a UGRID thing.

	int64 volume_node_connectivity(cell, max_cell_node) ;
		volume_node_connectivity:cf_role = "volume_node_connectivity" ;
		volume_node_connectivity:long_name = "Maps every volume to its corner nodes." ;
		volume_node_connectivity:start_index = 0LL ;

this one I'm confused by. if you have volume connectivity like this, then you'd need a node_z, and the nodes would be completely 3D. The way this is usually handled for oceanographic models is that the volumes are not defined this way, but implied by the 2D nodes and the siglay/layer/altitude/vertical values.

and I don't think you have any data on the volumes, so this is likely unnecessary.

// global attributes:
		:Conventions = "CF-1.6" ;

I think you can add the UGRID version here, too.

HTH,

-CHB

Thanks for your feedback,
I have updated the script following the bugs you pointed out.
Just to clarify, altitude is a node_z. It is both a variable standard name and also a potential coordinate. However, the way Selafin files are built, it is a node variable and not a coordinate. It also saves space as node_x, node_y are repeated by layers, not z (it is not a sigma layer system, there is not necessarily a proportionality between cells in the same fibre. Telemac operates differently than FVCOM for example in the way meshes are managed.
Regarding the volume node connectivity information, I disagree on the plotting formats. We use vtk standards in our visualisations and it is critical to have this information to build an unstructured grid. I would tend to suggest to make it mandatory in U Grid so that a one liner can load and plot a 3D viz of the mesh with Pyvista for example.
Once I have reexported the same file, I will do a ncdump again.
Thanks

There are some weird things that seem linked with xarray.to_netcdf function generating wrong coordinates but that's where I am now:
ncdump -h Final_mesh.nc
netcdf Final_mesh {
dimensions:
	time = 1465 ;
	node = 112015 ;
	layer = 6 ;
	face = 198364 ;
	max_face_nodes = 3 ;
	cell = 991820 ;
	max_cell_node = 6 ;
variables:
	int64 Mesh2D ;
		Mesh2D:cf_role = "mesh_topology" ;
		Mesh2D:long_name = "Topology data of 2D unstructured mesh" ;
		Mesh2D:topology_dimension = 2LL ;
		string Mesh2D:node_coordinates = "node_x", "node_y" ;
		Mesh2D:face_node_connectivity = "face_nodes" ;
		Mesh2D:face_dimension = "face" ;
	int64 crs ;
		crs:grid_mapping_name = "WGS 84 / UTM zone 30N" ;
		crs:semi_major_axis = 6378137. ;
		crs:inverse_flattening =<PHONE_NUMBER>6 ;
		crs:scale_factor_at_central_meridian = 0.9996 ;
		crs:longitude_of_central_meridian = 3LL ;
		crs:latitude_of_projection_origin = 0LL ;
		crs:false_easting = 500000LL ;
		crs:false_northing = 0LL ;
	int64 time(time) ;
		time:standard_name = "time" ;
		time:long_name = "time" ;
		time:axis = "T" ;
		time:units = "hours since 1972-07-13 17:15:00" ;
		time:calendar = "proleptic_gregorian" ;
	float node_x(node) ;
		node_x:_FillValue = NaNf ;
		node_x:units = "m" ;
		node_x:standard_name = "projection_x_coordinate" ;
		node_x:axis = "X" ;
		node_x:grid_mapping = "crs" ;
	float node_y(node) ;
		node_y:_FillValue = NaNf ;
		node_y:units = "m" ;
		node_y:standard_name = "projection_y_coordinate" ;
		node_y:axis = "Y" ;
		node_y:grid_mapping = "crs" ;
	int64 layer(layer) ;
	int64 face_nodes(face, max_face_nodes) ;
		face_nodes:cf_role = "face_node_connectivity" ;
		face_nodes:long_name = "Maps every triangular face to its three corner nodes" ;
		face_nodes:start_index = 0LL ;
	int64 volume_node_connectivity(cell, max_cell_node) ;
		volume_node_connectivity:cf_role = "volume_node_connectivity" ;
		volume_node_connectivity:long_name = "Maps every volume to its corner nodes." ;
		volume_node_connectivity:start_index = 0LL ;
	double altitude(time, layer, node) ;
		altitude:_FillValue = NaN ;
		altitude:units = "M" ;
		altitude:standard_name = "altitude" ;
		altitude:coordinates = "node_y node_x" ;
	double x_sea_water_velocity(time, layer, node) ;
		x_sea_water_velocity:_FillValue = NaN ;
		x_sea_water_velocity:units = "M/S" ;
		x_sea_water_velocity:standard_name = "x_sea_water_velocity" ;
		x_sea_water_velocity:coordinates = "node_y node_x" ;
	double y_sea_water_velocity(time, layer, node) ;
		y_sea_water_velocity:_FillValue = NaN ;
		y_sea_water_velocity:units = "M/S" ;
		y_sea_water_velocity:standard_name = "y_sea_water_velocity" ;
		y_sea_water_velocity:coordinates = "node_y node_x" ;
	double upward_sea_water_velocity(time, layer, node) ;
		upward_sea_water_velocity:_FillValue = NaN ;
		upward_sea_water_velocity:units = "M/S" ;
		upward_sea_water_velocity:standard_name = "upward_sea_water_velocity" ;
		upward_sea_water_velocity:coordinates = "node_y node_x" ;
	double horizontal_diffusivity(time, layer, node) ;
		horizontal_diffusivity:_FillValue = NaN ;
		horizontal_diffusivity:units = "M2/S" ;
		horizontal_diffusivity:standard_name = "horizontal_diffusivity" ;
		horizontal_diffusivity:coordinates = "node_y node_x" ;
	double ocean_vertical_diffusivity(time, layer, node) ;
		ocean_vertical_diffusivity:_FillValue = NaN ;
		ocean_vertical_diffusivity:units = "M2/S" ;
		ocean_vertical_diffusivity:standard_name = "ocean_vertical_diffusivity" ;
		ocean_vertical_diffusivity:coordinates = "node_y node_x" ;
	double turbulent_kinetic_energy(time, layer, node) ;
		turbulent_kinetic_energy:_FillValue = NaN ;
		turbulent_kinetic_energy:units = "JOULE/KG" ;
		turbulent_kinetic_energy:standard_name = "turbulent_kinetic_energy" ;
		turbulent_kinetic_energy:coordinates = "node_y node_x" ;
	double sea_water_salinity(time, layer, node) ;
		sea_water_salinity:_FillValue = NaN ;
		sea_water_salinity:units = "" ;
		sea_water_salinity:standard_name = "sea_water_salinity" ;
		sea_water_salinity:coordinates = "node_y node_x" ;
	double sea_water_temperature(time, layer, node) ;
		sea_water_temperature:_FillValue = NaN ;
		sea_water_temperature:units = "" ;
		sea_water_temperature:standard_name = "sea_water_temperature" ;
		sea_water_temperature:coordinates = "node_y node_x" ;

// global attributes:
		:Conventions = "CF-1.6, UGRID 1.0" ;
		:standard_name_vocabulary = "CF-1.6" ;
		:history = "Created 2021-12-14 08:29:34.110983" ;
		:source = "Telemac 3D" ;
		:CoordinateSystem = "Cartesian" ;
		:title = "TELEMAC 3D: Loch Hourn                                                  SERAFIN " ;
		:original\ file = "/media/julien/NuDrive/Consulting/The NW-Edge/Oceano/Loch Hourn/Final_mesh.slf" ;
		:proj4 = "+proj=utm +zone=30 +datum=WGS84 +units=m +no_defs " ;

I'm a bit confused by this bit:
	int64 volume_node_connectivity(cell, max_cell_node) ;
		volume_node_connectivity:cf_role = "volume_node_connectivity" ;
		volume_node_connectivity:long_name = "Maps every volume to its corner nodes." ;
		volume_node_connectivity:start_index = 0LL ;

so this defines the cells. each cell has six nodes (triangular prisms, yes?) but what value goes into the array?
I don't see an array you can index into that has all three coordinates. Or am I missing something?
What would be great is an example with the arrays themselves, for a very small example mesh. That might make it more clear.
each node has three coordinates, yes? x, y, z but as far as I can tell there is so array the

There isn't, it is pure FE you are right.
I have been thinking about it and maybe we don't need this volume
information. It is just very handy to load the array straight into VTK.
I am also exploring why the coordinates from the netcdf variables do not
match the one from the variables of the xarray. Unfortunately this seems to
be an xarray internal pb I can only raise an issue for. I will try to make
a small example in a netcdf format.
I have had a look at gridded but I am not too sure what to make of it.
Thanks
On Tue, 14 Dec 2021, 21:06 Chris Barker, @.***> wrote:

I'm a bit confused by this bit:
int64 volume_node_connectivity(cell, max_cell_node) ;
volume_node_connectivity:cf_role = "volume_node_connectivity" ;
volume_node_connectivity:long_name = "Maps every volume to its corner nodes." ;
volume_node_connectivity:start_index = 0LL ;
so this defines the cells. each cell has six nodes (triangular prisms,
yes?) but what value goes into the array?
I don't see an array you can index into that has all three coordinates. Or
am I missing something?
What would be great is an example with the arrays themselves, for a very
small example mesh. That might make it more clear.
each node has three coordinates, yes? x, y, z but as far as I can tell
there is so array the
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ugrid-conventions/ugrid-conventions/issues/55#issuecomment-994008802,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACJCEFTPNYALH3OXWOXOJBDUQ6WUZANCNFSM5JT4CJUA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

I have included a file you can test here. Feel free to use it for testing. I have limited to 100 nodes and 3 time-steps. It is a typical output from Telemac 3D.
It looks like this in xarray form
<xarray.Dataset>
Dimensions:                          (cell: 0, face: 101, layer: 6, max_cell_node: 6, max_face_nodes: 3, node: 100, time: 3)
Coordinates:
  * layer                            (layer) int64 0 1 2 3 4 5
    node_x                           (node) float32 dask.array<chunksize=(100,), meta=np.ndarray>
    node_y                           (node) float32 dask.array<chunksize=(100,), meta=np.ndarray>
  * time                             (time) datetime64[ns] 1972-07-13T17:15:0...
Dimensions without coordinates: cell, face, max_cell_node, max_face_nodes, node
Data variables:
    Mesh2D                           int64 ...
    altitude                         (time, layer, node) float64 dask.array<chunksize=(3, 1, 100), meta=np.ndarray>
    crs                              int64 ...
    horizontal_diffusivity           (time, layer, node) float64 dask.array<chunksize=(3, 1, 100), meta=np.ndarray>
    ocean_vertical_diffusivity       (time, layer, node) float64 dask.array<chunksize=(3, 1, 100), meta=np.ndarray>
    sea_water_salinity               (time, layer, node) float64 dask.array<chunksize=(3, 1, 100), meta=np.ndarray>
    sea_water_temperature            (time, layer, node) float64 dask.array<chunksize=(3, 1, 100), meta=np.ndarray>
    turbulent_kinetic_energy         (time, layer, node) float64 dask.array<chunksize=(3, 1, 100), meta=np.ndarray>
    upward_sea_water_velocity        (time, layer, node) float64 dask.array<chunksize=(3, 1, 100), meta=np.ndarray>
    x_sea_water_velocity             (time, layer, node) float64 dask.array<chunksize=(3, 1, 100), meta=np.ndarray>
    y_sea_water_velocity             (time, layer, node) float64 dask.array<chunksize=(3, 1, 100), meta=np.ndarray>
    sea_floor_depth_below_sea_level  (time, node) float64 dask.array<chunksize=(3, 100), meta=np.ndarray>
    face_nodes                       (face, max_face_nodes) float64 dask.array<chunksize=(101, 1), meta=np.ndarray>
    volume_node_connectivity         (cell, max_cell_node) float64 dask.array<chunksize=(0, 1), meta=np.ndarray>
Attributes:
    Conventions:               CF-1.6, UGRID 1.0
    CoordinateSystem:          Cartesian
    history:                   Created 2021-12-14 12:09:27.659716
    original file:             /media/julien/NuDrive/Consulting/The NW-Edge/O...
    proj4:                     +proj=utm +zone=30 +datum=WGS84 +units=m +no_d...
    source:                    Telemac 3D
    standard_name_vocabulary:  CF-1.6
    title:                     TELEMAC 3D: Loch Hourn

And this is in netcdf. I think the coordinates of the variable makes no sense but the dimensions are. Could be that netcdf confused me too...
ncdump -h small_mesh.nc
netcdf small_mesh {
dimensions:
	time = 3 ;
	layer = 6 ;
	node = 100 ;
	face = 101 ;
	max_face_nodes = 3 ;
	cell = UNLIMITED ; // (0 currently)
	max_cell_node = 6 ;
variables:
	int64 Mesh2D ;
		Mesh2D:cf_role = "mesh_topology" ;
		Mesh2D:face_dimension = "face" ;
		Mesh2D:face_node_connectivity = "face_nodes" ;
		Mesh2D:long_name = "Topology data of 2D unstructured mesh" ;
		string Mesh2D:node_coordinates = "node_x", "node_y" ;
		Mesh2D:topology_dimension = 2LL ;
	double altitude(time, layer, node) ;
		altitude:_FillValue = NaN ;
		altitude:standard_name = "altitude" ;
		altitude:units = "M" ;
		altitude:coordinates = "node_x node_y" ;
	int64 crs ;
		crs:false_easting = 500000LL ;
		crs:false_northing = 0LL ;
		crs:grid_mapping_name = "WGS 84 / UTM zone 30N" ;
		crs:inverse_flattening =<PHONE_NUMBER>6 ;
		crs:latitude_of_projection_origin = 0LL ;
		crs:longitude_of_central_meridian = 3LL ;
		crs:scale_factor_at_central_meridian = 0.9996 ;
		crs:semi_major_axis = 6378137. ;
	double horizontal_diffusivity(time, layer, node) ;
		horizontal_diffusivity:_FillValue = NaN ;
		horizontal_diffusivity:standard_name = "horizontal_diffusivity" ;
		horizontal_diffusivity:units = "M2/S" ;
		horizontal_diffusivity:coordinates = "node_x node_y" ;
	int64 layer(layer) ;
	float node_x(node) ;
		node_x:_FillValue = NaNf ;
		node_x:axis = "X" ;
		node_x:grid_mapping = "crs" ;
		node_x:standard_name = "projection_x_coordinate" ;
		node_x:units = "m" ;
	float node_y(node) ;
		node_y:_FillValue = NaNf ;
		node_y:axis = "Y" ;
		node_y:grid_mapping = "crs" ;
		node_y:standard_name = "projection_y_coordinate" ;
		node_y:units = "m" ;
	double ocean_vertical_diffusivity(time, layer, node) ;
		ocean_vertical_diffusivity:_FillValue = NaN ;
		ocean_vertical_diffusivity:standard_name = "ocean_vertical_diffusivity" ;
		ocean_vertical_diffusivity:units = "M2/S" ;
		ocean_vertical_diffusivity:coordinates = "node_x node_y" ;
	double sea_water_salinity(time, layer, node) ;
		sea_water_salinity:_FillValue = NaN ;
		sea_water_salinity:standard_name = "sea_water_salinity" ;
		sea_water_salinity:units = "" ;
		sea_water_salinity:coordinates = "node_x node_y" ;
	double sea_water_temperature(time, layer, node) ;
		sea_water_temperature:_FillValue = NaN ;
		sea_water_temperature:standard_name = "sea_water_temperature" ;
		sea_water_temperature:units = "" ;
		sea_water_temperature:coordinates = "node_x node_y" ;
	int64 time(time) ;
		time:axis = "T" ;
		time:long_name = "time" ;
		time:standard_name = "time" ;
		time:units = "hours since 1972-07-13T17:15:00" ;
		time:calendar = "proleptic_gregorian" ;
	double turbulent_kinetic_energy(time, layer, node) ;
		turbulent_kinetic_energy:_FillValue = NaN ;
		turbulent_kinetic_energy:standard_name = "turbulent_kinetic_energy" ;
		turbulent_kinetic_energy:units = "JOULE/KG" ;
		turbulent_kinetic_energy:coordinates = "node_x node_y" ;
	double upward_sea_water_velocity(time, layer, node) ;
		upward_sea_water_velocity:_FillValue = NaN ;
		upward_sea_water_velocity:standard_name = "upward_sea_water_velocity" ;
		upward_sea_water_velocity:units = "M/S" ;
		upward_sea_water_velocity:coordinates = "node_x node_y" ;
	double x_sea_water_velocity(time, layer, node) ;
		x_sea_water_velocity:_FillValue = NaN ;
		x_sea_water_velocity:standard_name = "x_sea_water_velocity" ;
		x_sea_water_velocity:units = "M/S" ;
		x_sea_water_velocity:coordinates = "node_x node_y" ;
	double y_sea_water_velocity(time, layer, node) ;
		y_sea_water_velocity:_FillValue = NaN ;
		y_sea_water_velocity:standard_name = "y_sea_water_velocity" ;
		y_sea_water_velocity:units = "M/S" ;
		y_sea_water_velocity:coordinates = "node_x node_y" ;
	double sea_floor_depth_below_sea_level(time, node) ;
		sea_floor_depth_below_sea_level:_FillValue = NaN ;
		sea_floor_depth_below_sea_level:standard_name = "sea_floor_depth_below_sea_level" ;
		sea_floor_depth_below_sea_level:coordinates = "node_x node_y" ;
	double face_nodes(face, max_face_nodes) ;
		face_nodes:_FillValue = NaN ;
		face_nodes:cf_role = "face_node_connectivity" ;
		face_nodes:long_name = "Maps every triangular face to its three corner nodes" ;
		face_nodes:start_index = 0LL ;
	double volume_node_connectivity(cell, max_cell_node) ;
		volume_node_connectivity:_FillValue = NaN ;
		volume_node_connectivity:cf_role = "volume_node_connectivity" ;
		volume_node_connectivity:long_name = "Maps every volume to its corner nodes." ;
		volume_node_connectivity:start_index = 0LL ;

// global attributes:
		:Conventions = "CF-1.6, UGRID 1.0" ;
		:CoordinateSystem = "Cartesian" ;
		:history = "Created 2021-12-14 12:09:27.659716" ;
		:original\ file = "/media/julien/NuDrive/Consulting/The NW-Edge/Oceano/Loch Hourn/Final_mesh.slf" ;
		:proj4 = "+proj=utm +zone=30 +datum=WGS84 +units=m +no_defs " ;
		:source = "Telemac 3D" ;
		:standard_name_vocabulary = "CF-1.6" ;
		:title = "TELEMAC 3D: Loch Hourn                                                  SERAFIN " ;


Parsing results of D-SheetPiling

I am now working on parsing results from D-Sheet Piling V23. However, the structure has changed since last time i used it. One big issue i have is that in the data the names of the phases are impossible to find. I would suggest to add the name of a phase to the results class, it's a small addition but for tracking results it's a big improvement. For now i would be helped a lot if you can point me to where i can find the stagenames in the serialized file.

Thanks for the response! On my end the construction stages is a str, which makes it more difficulat to grab the staged constructions. It looks like this:

If you want to add the name of a phase to the results class, you can do it yourself. Please add a test for it and then make a pull request.

Thanks for the response! On my end the construction stages is a str, which makes it more difficulat to grab the staged constructions. It looks like this:

That is true. There is still a lot of work to do for better access. See the list in https://github.com/Deltares/GEOLib/issues/84.


test: partial import export areas covered

Adding tests for partial import/export
To be done into a new app
To be done into a new page
GitConnected App and importApp testing
https://docs.google.com/spreadsheets/d/1Vq5vRUyAMv2npPv4j41omzZrYcRUb8LEOhNVu_O4OE8/edit?gid=428365096#gid=428365096

Summary by CodeRabbit

New Features

Introduced end-to-end tests for partial import and export functionality, ensuring a robust testing framework for these features.
Added new JSON configurations for application artifacts, including data sources, actions, and widgets, enhancing application setup and functionality.

Documentation

New JSON files created to define structured configurations for application imports and exports, including detailed metadata and properties for widgets and actions.

Chores

Updated test specification path to focus on partial import/export functionality.

/ci-test-limit-count run_count=25

/ci-test-limit

/ci-test-limit-count run_count=25

/ci-test-limit

/ci-test-limit-count run_count=25


chore: bdd-nh-1583253935 to 0.0.1

chore: Promote bdd-nh-1583253935 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, you can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Support Latex

This PR (https://github.com/excalidraw/excalidraw/pull/6037) introduce a Math mode in Excalidraw to integrate with Latex.
A live demo could be try here: https://math.preview.excalidraw.com/
How can I use the danieljgeiger-mathjax branch to get Latex inside VS Code ?

As stated in the README.md

This extension only goal is to integrate Excalidraw to the Visual Studio Code ecosystem. Users should be able to use both the website and the extension with a minimal amount of friction. As such, we will not accept any contribution that significantly modify the user experience compared to the Excalidraw website.

So the extension won't support latex until support for it is added in excalidraw.com


Regarding Java 11 and above, the accuracy issue of ObjectSampler in --total mode

hi Andrei
In this code, the number of calls to testSmallAlloc and testLargeAlloc is different, but their total memory allocations in bytes are close, which can also be proven from the actual running logs.
public class AllocTest {
    private static volatile long n1 = 0;
    private static volatile long n2 = 0;
    private static Thread t1;

    public static void main(String[] args) throws Exception {
        testAlloc();
        while (true) {
            Thread.sleep(1000);
            System.out.println("small total: " + n1);
            System.out.println("large total: " + n2);
            System.out.println();
        }
    }

    private static void testAlloc() {
        t1 = new Thread(() -> {
            while (true) {
                for (int i = 0; i < 256; i++) {
                    n1 += testSmallAlloc(1024);
                }
                n2 += testLargeAlloc(1024 * 256);
            }
        });
        t1.start();
    }

    private static int testSmallAlloc(int size) {
        return realAlloc(size);
    }

    private static int testLargeAlloc(int size) {
        return realAlloc(size);
    }

    private static int realAlloc(int size) {
        byte[] arr = new byte[size];
        return arr.length;
    }
}

java11/bin/java -Xint AllocTest

small total:<PHONE_NUMBER>
large total:<PHONE_NUMBER>

small total:<PHONE_NUMBER>
large total:<PHONE_NUMBER>

small total:<PHONE_NUMBER>
large total:<PHONE_NUMBER>

small total:<PHONE_NUMBER>8
large total:<PHONE_NUMBER>8

Using --total mode, it is expected that the proportions of testSmallAlloc and testLargeAlloc should be close in the flame graph, but in fact testLargeAlloc is 99.91% while testSmallAlloc is only 0.81%.
/root/async-profiler-fork/build/bin/asprof --alloc 256k -f static/profile.html --total -d 10 jps

The reason is that size is used as counter in ObjectSampler::recordAllocation, which causes only the array size to be recorded during testSmallAlloc, which is actually the interval in JVMTI_EVENT_SAMPLED_OBJECT_ALLOC (here we ignore the randomness of interval in JVMTI).
https://github.com/async-profiler/async-profiler/blob/915b09067c14e3b66826a988f7cbb768c4ab1e18/src/objectSampler.cpp#L163
I feel that event._total_size should be used as counter here. I verified it on my branch and it looks much normal after the modification.

if you think this optimization is feasible, I can create a PR.

Thank you for the analysis. Your conclusion makes total sense. Feel free to submit a PR.

i also noticed that the small_alloc frame is absent in --ctack=dwarf, but in --cstack=vm mode.
./asprof -d 30 -e cpu -o flamegraph -f cpu_vm.html --cstack vm 632756

./asprof -d 30 -e cpu -o flamegraph -f cpu_dwarf.html --cstack dwarf 632756


Type check Enum types

If all Enum properties have the "propertytNameCodeType" class e.g.
ItemType $BuyerProtection  maps to  BuyerProtectionCodeType

then an alternative type checking method would allow for better distinction between an actual "string" type and an "string enum" type which would make it easier to check whether the provided value was valid.
If all \DTS\eBaySDK\ {service} \Enums{ .......CodeType} class Constants are ALL strings then the method is even tidier.
Heres the change
ConfigurationResolver
/** @var array Map of type to function that confirms type. */
private static $typeMap = [
     'enum' => 'is_string'

ItemType
* @property \DTS\eBaySDK\Trading\Enums\BuyerProtectionCodeType $BuyerProtection
....
// From
'BuyerProtection' => array(
        'type' => 'string',
// To
'BuyerProtection' => array(
        'type' => 'enum',

If the Constants type differs then a much uglier solution could be used
private static $typeMap = [
     'enum_string' => 'is_string',
     'enum_bool' => 'is_bool'

 'BuyerProtection' => array(
        'type' => 'enum_string',

WHY?
I'm using if for form validation and automation.
I've been using this snippet of code to get some details about different class properties.
$class_name = "\DTS\\eBaySDK\Trading\Types\\" . $type . "Type";

$reflectionClass = new \ReflectionClass($class_name);

$staticProperties = $reflectionClass->getStaticProperties();

$properties = (isset($staticProperties['properties'][$class_name]) ? $staticProperties['properties'][$class_name] : $staticProperties['propertyTypes'];

foreach($properties as $property){

    if($property['type'] == 'string'){
        $field['type'] = 'textbox';
        if(!empty($property]['unbound'])){
            // array allowed multiple fields
        } else {
             // single field
        }
    }
    ....

// but the change would allow for something like

    if($property['type'] == 'enum'){

       $field['type'] = 'select';
        if(!empty($property]['unbound'])){
            // array allowed multiple fields e.g. (payment methods)
        } else {
             // single field
        }

        $reflectionClass = new \ReflectionClass("\DTS\\eBaySDK\Trading\Enums\\" . $property[''elementName'] . "CodeType");
        $field['options'] = $reflectionClass->getConstants(); //key =>value pair
    }

     ...
    $fields [] = $field;
}

It would allow you to grab the constants to use as the options of a select element dynamically and the checkType method could check that the $provided value is valid by checking against the classes constants.
Whatever the outcome of this, I really think there should be a way of finding out the actual class of a enum property.

Firstly sorry for not addressing this issue sooner. At the present time this is a feature that I don't want to implement in the SDK as it's dependant upon a protected property that may be removed in future versions.


Enable strictArp for k8s cluster

What would you like to be added:
Enable strictArp for k8s cluster created for cloudpods or manged by cloudpods

https://github.com/yunionio/ocadm/pull/200


Created buttons with box shadow inset property

@viditvarshney
Your username is viditvarshney and you've created a directory with name vidit-varshney
Kindly correct this asap and I'll accept PR.

@lazycipher  done :)

Great Work!
Thanks for Contribution.


Update proc-macro2, syn & quote to 1.0

The three proc macro libraries were recently released as 1.0, so it would be great to have a updated version of prost with those for less duplicate dependencies.

Agreed, now after failure was upgraded this is our only dependency that brings in the old syn pre-1.0 version. So would definitely be nice to have prost-derive upgraded

Released as part of 0.6.0.


Add definitions for combine-section-reducers

https://github.com/ryo33/combine-section-reducers

Hey @iofjuupasli, I can't accept this until the specs are passing. Looks like L42 is succeeding when it should be failing.


how do i use

I don't know python but I still kinda wanna use this. how

@Pirobit I'll add some instructions to the read me in a bit. I'll let you know here when its done.

@Pirobit I have updated the readme with installation instructions.


Move away from Travis for CI

Unfortunately, Travis recently change its policy wrt open source software and test results can take several days to finish. We could move to Github Actions.

I've opened #340 to do this.

I've opened #340 to do this.


Error when applying on local.

Describe the Bug
A clear and concise description of what the bug is.
Expected Behavior
On a non-trivial Puppet setup, my bolt apply runs are failing on localhost, with the following error:
bolt_stacktrace.txt
Steps to Reproduce
Steps to reproduce the behavior:

Run bolt apply

Environment

Version: 2.3.1
Platform: Ubuntu 18.04

Additional Context
I believe I've tracked this down to incorrectly passing stdin to the local subshell.
This fixed it for me, but I'm pretty new to Bolt so not sure if this is right: https://github.com/puppetlabs/bolt/pull/1714

Closed by #1702


👨🏼🔬 [Experiment] Calling onTouch from the native side

Currently, a touch triggers a redraw then the touch handler updates values which trigger another redraw. The idea would be to only trigger a redraw on value change by calling onTouch from the native side. While this might be a good idea for the reconciler, it seriously breaks the flow of the imperative API. To be discussed.

In the beginning of the project this was also my approach - but it quickly became a bit too complex to get to work correctly.


Not-persisted properties

Use transient keyword or create a new Annotation to tell beanstore to not persist these properties. First thought is to use the 'transient' keyword as it has the meaning wrt. Java serialization. Unsure if this information is readable of a bean property.

Does not make an awful lot of sense since the Data Beans are not supposed to contain business logic. And: it is not possible because the Java Bean Property Api tells you nothing about the filed and its modifiers.


Large molecule (protein) support

Improve the HELM editor handling of large molecules especially antibodies. Currently the HELM Editor includes a Protein and an ADC Editor that both basically support the annotation of e.g. the Cys-Cys bonds in large proteins. But both editors lack the functionality to lookup the single Cys positions that then could be connected. Especially the well known Cys-cys bonds of antibodies (within the Ig-like domains, between HCs and between HCs and LCs) could be automatically identified and annotated. This would ease and speed-up the process to migrate large antibodies lists from any previous notation to the HELM notation and thus increase the acceptance of the HELM editor in the user community.

Fully solved by HELM Antibody Editor


fix(payment): INT-5645 Openpay: Localized message for invalid cart error

What? INT-5645

Display a localized error message for an invalid cart error.
Also, fixes the widget's overflow. 😁

Why?
To display a custom error message based on location. The Openpay team wants us to use the following messages:

For AU/UK/NZ: "Cart price is different to Openpay plan amount."
For US merchants: "Cart price is different to Opy plan amount."

Testing / Proof
Error message
Before:

Now:

Widget's overflow
Before:

Now:

Depends on
👉 https://github.com/bigcommerce/checkout-sdk-js/pull/1367
@bigcommerce/checkout

https://github.com/bigcommerce/checkout-sdk-js/releases/tag/v1.227.1 has been created for use.


extract common functions from SourceConnector and SourceTask

The idea is to centralize the common functions of current MirrorSourceConnector and MirrorSourceTask to prepare for reusing them in new Sink Connector and Sink Task in future (KIP-656 https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=158870065)
Two new files are proposed:

MirrorConnectorCommon: contains the reusable functions extracted from MirrorSourceConnector
MirrorTaskCommon: contains the reusable functions extracted from MirrorSourceTask

no functional changes to current behaviors

@mimaison @ryannedolan As titled, I think the change proposed in this PR may be preferred when tackling https://issues.apache.org/jira/browse/KAFKA-10339 (EOS) since lots of common logics can be reused.
Given https://github.com/apache/kafka/pull/9451 has to be a big PR anyway, I slightly prefer to have the common logic extraction in a separate PR, like this one. But if your folks believe it looks better to have EOS and common logic extraction in one PR, that also sounds good to me :) Please invite other folks to chime in if needed.

@mimaison @ryannedolan As titled, I think the change proposed in this PR may be preferred when tackling https://issues.apache.org/jira/browse/KAFKA-10339 (EOS) since lots of common logics can be reused.
Given https://github.com/apache/kafka/pull/9451 has to be a big PR anyway, I slightly prefer to have the common logic extraction in a separate PR, like this one. But if your folks believe it looks better to have EOS and common logic extraction in one PR, that also sounds good to me :) Please invite other folks to chime in if needed.

Hi @mimaison @ryannedolan sorry for ping again for your high-level thoughts on this PR. If there is any gap to start the review, I am happy to try to fill the gap. Thanks

thanks @mimaison @rajinisivaram or @rhauch for your attention to review


AudioKit engine stops occasionally when loading an AVPlayer elsewhere

In my app I have AudioKit playing local audio, then I stream remote audio using AVPlayer.
Not every time but a lot of the time the engine will stop.
Details:
It stops when readyToPlay KVO is sent
Doesn't matter if I make a new AVPlayer or if I use AVPlayer.replaceCurrentItem
The player call to play does not need to be called to stop the engine.

(Disclaimer, not affiliated with AudioKit) It would be helpful if you could create a simple project that demonstrates the issue. I would also check audio session interruptions to see if AVPlayer itself interrupts the audio


Make CONSOLE_OUTPUT_FILE configurable

Even if Kafka is not configured without the console appender the CONSOLE_OUTPUT_FILE is generated. Allowing for this to be configurable offers more flexibility including redirecting nohup.out or the resulting redirect to /dev/null

@ewencp mind reviewing

Failures appear to be unrelated at first glance


Add option to show active branch in Windows title

Hi,
It could be nice to have a new variable in Window: Title setting to show the current active branch.
Thank you so much, cheers!

#69003


Sort Bulk Files Automation

Sort Bulk Files Automation
Brief -
The script will be run in a folder full of random files and sort them based on there file types and names in each separate folder.
Instructions

Create a new folder for your script and file/folder name should be appropriate.
Create a README.md in your folder for program Instructions
add requirements.txt if needed

Programming Language

[x] Python

Happy Coding

Hey, isn't it same as #219 ?

Yes I closed it and opened a new issue with a new script idea.


Swift 3 (XCode 8 Beta 6)

Closes #78.
Fixes #87.
Duplicate of #84 (more issues solved here).
Warning: I was not able to create a swift3 branch. Can you do it yourself @thii please?
Thank you for your work.

Updated compatibility to Xcode 8 beta 4.

Updated compatibility to Xcode 8 Beta 6.

Is the swift3 branch somewhere?. I can't see it.


How does Parse-server and MongoLab handle file upload and storage?

I have just migrated my simple Parse app and database from Parse hosted services to Heroku (Parse-server-example) + MongoLab.
My simple app has a function to upload an image to a  type column of a table.
I am just wondering how Parse-server-example and MongoLab together handle file upload and storage. I noticed that the  type had become a String type on MongoLab, e.g. "myFile": "tfss-a5ca099d-fs79-73p0-q702-8265af1f77a3-MYIMAGE.png". Does Parse-server support file upload and how does it store the file?
Thanks!

+1

Yes, Parse Server supports file upload.
By default Parse Server uses the GridFileAdapter to store your file in your mLab database. The files are stored according to the GridFS specification of mongoDB.
More information here.
Alternatively you can store your file in a separate storage outside of your mLab database, e.g. in Amazon S3 or Google Cloud Storage. Your mLab database will then only hold a reference to the file in that separate storage. One reason to do this can be that separate storage is often cheaper than storage in a managed database environment. To do that you specify a fileAdapter in index.js of your Parse Server.
More information here.

Thanks @mtrezza for the info.
There is documentation regarding S3 and Google Cloud Storage, but I am unable to find anything regarding how to set up a GridStoreAdapter with Parse-server-example. Are you able provide an example?

@grassland-curing-cfa, the fileAdapters are set-up in your Parse Server index.js file.
To use the GridStoreAdapter not extra set-up is required as this is the default storage when no fileAdapter is explicitly specified in your Parse Server initialization call in index.js.
To use another fileAdapter you specify it in your Parse Server initialization call. Below is an example for Amazon S3 storage fileAdapter specification where you would have to replace the parameters "S3_..." with your own:
...
var S3Adapter = require('parse-server').S3Adapter;

var api = new ParseServer({
  databaseURI: databaseUri || 'mongodb://localhost:27017/dev',
  appId: process.env.APP_ID || 'APPLICATION_ID',
  masterKey: process.env.MASTER_KEY || 'MASTER_KEY',
  ...
  filesAdapter: new S3Adapter(
    "S3_ACCESS_KEY",
    "S3_SECRET_KEY",
    "S3_BUCKET",
    {directAccess: true}
  ),
  ...
});

You also need to set-up a S3 storage at Amazon. More info here
Similar procedure if you want to set-up a Google Cloud storage. More info here.

Please refer to Issue #1029 that I created yesterday regarding the GridStoreAdapter that I trialled. I didn't specify anything extra in the ParseServer constructor in the index.js file. After I ran the cURL command to upload some test image files, "fs.files" and "fs.chunks" were populated with a new document but the "chunkSize"is always 261120 regardless of the actual size of the file I uploaded. When I tried to open the uploaded using the returned URL it showed "Unable to display the file and it contains errors".
Any idea? Thanks so much!

I am closing this out as we're trying to cut down on the number of non-issues. This will help us focus on the issues that are actively preventing people from migrating their production apps to Parse Server.
You may use Server Fault for questions about managing Parse Server.
For code-level and/or implementation-related questions or technical support, please refer to Stack Overflow.

@mtrezza The two links you have posted above for configuring cgs or s3 adapters link to the same place. I am currently trying to set up a cgs apapter and have managed to get a Parse-Server instance running so far but am sort-of stuck at the moment. Anything to point me in the right direction would be great!

Documentation for the fileAdapter is here now.


refactoring: use single maven version for miranum connect and platform

closes #436

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

Project coverage is 50.49%. Comparing base (97795b5) to head (1fee279).

Additional details and impacted files
@@            Coverage Diff            @@
##               main     #445   +/-   ##
=========================================
  Coverage     50.49%   50.49%
  Complexity      205      205
=========================================
  Files           150      150
  Lines          1612     1612
  Branches        114      114
=========================================
  Hits            814      814
  Misses          766      766
  Partials         32       32

Flag
Coverage Δ

unittests
50.49% <ø> (ø)

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

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


Update AboutUs.md

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

LGTM


Feature/support ts cs lua

support typescript c# lua

I'm tring to add support with more language such as solidity.

When you merge this request, I'll close another.

closed

Looks good! I am unsure about your use of runCodeInShell(...) instead of runCode(...). Do the languages you implemented need the shell's support to be executed? Otherwise, it could make sense to skip the shell environment and execute it without shell.
Either way, I think your changes are ready to be merged and released when I am free.

I tested it and it looks like it is necessary to use a shell environment so we can just keep it as it is.


PYIC-2827 Remove unused code/classes

Proposed changes
What changed
Remove unused code/classes
Why did it change
We don't need BaseJourneyLambda anymore
Issue tracking

PYIC-2827

Done other than getIpAddress which is still used by the initialise-ipv-session and end-mitigation-journey lambdas which still take an APIGateway event


changes in readme

@mastermindharsh If you are doing this for Hacktoberfest, this PR will not be counted, even if you spam in every repo.

let github decide that
On Mon, Oct 5, 2020 at 7:28 PM HIMANSHU SHARMA<EMAIL_ADDRESS>wrote:

@mastermindharsh https://github.com/mastermindharsh If you are doing
this for Hacktoberfest, this PR will not be counted, even if you spam in
every repo.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/himanshusharma89/flutterx100/pull/24#issuecomment-703650420,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AHBKDD2CKBE6J3DIA5PIVBTSJHGI7ANCNFSM4SEXGVUA
.

--
Harsh Tiwari
Software Developer Associate
[image: Logo] https://www.cerner.com/
M: +91-7550170847
<EMAIL_ADDRESS>- www.cerner.com
[image: Facebook icon] https://www.facebook.com/harsh.tiwari.9216  [image:
LinkedIn icon] https://www.linkedin.com/in/harsh-tiwari-82180a144/  [image:
Twitter icon] https://twitter.com/HarshMastermind  [image: Instagram icon]
https://www.instagram.com/mastermindharsh/

🤣 you should read the new Hacktoberfest guidelines first before commenting that @mastermindharsh


No such file or directory when trying to create cert.

Hi all, hope somebody can help me, as i have alot of certificates to create.
### Issue Description
Im running fast lane to create certificates for multiple developer accounts, this has worked great for years, but this morning it stopped working (at least this is when i found out it stopped working). Im getting a "No such file or directory @ rb_sysopen - /Users/XXXXXXXXXX/Certificates/development/XXXXXX A/S.cer" error and cannot move forward. I have of cause checked that the directory is correct, which it is. the file does  not exists as this is what fastlane needs to create but the file structure is correct, i did also try to create a dummy file in the path with that file name but it did not make a difference.
##### Command executed
cert(
development: true,
username: ENV["APPLE_ID"],
team_id: ENV["APPLE_DEV_TEAM_ID"],
team_name: ENV["CONNECT_TEAM_NAME"],
output_path: "~/Certificates/development/",
filename: ENV["CONNECT_TEAM_NAME"]
)
##### Complete output when running fastlane, including the stack trace and command used
08:07:33]: Running lane ios make_certificates_all. Next time you can do this by directly typing bundle exec fastlane ios make_certificates_all 🚀.
[08:07:33]: Driving the lane 'ios make_certificates_all' 🚀
[08:07:33]: --------------------------------
[08:07:33]: --- These ENV Files are run: ---
[08:07:33]: --------------------------------
[08:07:33]: ▸ xxxxxxxx
[08:07:33]: ----------------------------------------------------------
[08:07:33]: --- Step: Switch to ios set_environment_variables lane ---
[08:07:33]: ----------------------------------------------------------
[08:07:33]: Cruising over to lane 'ios set_environment_variables' 🚖
[08:07:33]: Cruising back to lane 'ios make_certificates_all' 🚘
[08:07:33]: ----------------------------------------------------------
[08:07:33]: --- Step: Switch to ios set_environment_variables lane ---
[08:07:33]: ----------------------------------------------------------
[08:07:33]: Cruising over to lane 'ios set_environment_variables' 🚖
[08:07:33]: Cruising back to lane 'ios make_certificates_all' 🚘
[08:07:33]: -------------------------------------------------
[08:07:33]: --- Step: Switch to ios make_certificate lane ---
[08:07:33]: -------------------------------------------------
[08:07:33]: Cruising over to lane 'ios make_certificate' 🚖
[08:07:33]: ------------------
[08:07:33]: --- Step: cert ---
[08:07:33]: ------------------
+---------------------------------------------------------------------------------------------+
|                                  Summary for cert 2.222.0                                   |
+-------------------------+-------------------------------------------------------------------+
| development             | true                                                              |
| username                |xxxxxxxxxxxxxxxxxxxxxxxx                                           |
| team_id                 | xxxxxxxxxxxxx                                                     |
| team_name               | xxxxxxxxxxxxx                                                     |
| filename                | xxxxxxxxxxxxx                                                     |
| force                   | false                                                             |
| generate_apple_certs    | true                                                              |
| keychain_path           | /Users/xxxxxxxxxxxxxxxxxxxxxx/Library/Keychains/login.keychain-db |
| skip_set_partition_list | false                                                             |
| platform                | ios                                                               |
+-------------------------+-------------------------------------------------------------------+
[08:07:33]: Starting login with user<EMAIL_ADDRESS>[08:07:34]: Successfully logged in
[08:07:35]: --------------------------
[08:07:35]: --- Step: notification ---
[08:07:35]: --------------------------
+----------------------------------------------+
|                 Lane Context                 |
+------------------+---------------------------+
| DEFAULT_PLATFORM | ios                       |
| PLATFORM_NAME    | ios                       |
| LANE_NAME        | ios make_certificates_all |
+------------------+---------------------------+
[08:07:35]: Called from Fastfile at line 620
[08:07:35]: [08:07:35]:     618:	 [08:07:35]:     619:	  private_lane :make_certificate do [08:07:35]:  => 620:	    cert( [08:07:35]:     621:	     development: true, [08:07:35]:     622:	     username: ENV["APPLE_ID"], [08:07:35]:
[08:07:35]: No such file or directory @ rb_sysopen - /Users/xxxxxxxxxxxxxxxxxxxxxx/Certificates/development/xxxxxxxx A/S.cer
+-------------------------------------------------------------------+
|                         fastlane summary                          |
+------+----------------------------------------------+-------------+
| Step | Action                                       | Time (in s) |
+------+----------------------------------------------+-------------+
| 1    | Verifying fastlane version                   | 0           |
| 2    | default_platform                             | 0           |
| 3    | Switch to ios set_environment_variables lane | 0           |
| 4    | Switch to ios set_environment_variables lane | 0           |
| 5    | Switch to ios make_certificate lane          | 0           |
| 💥   | cert                                         | 2           |
| 7    | notification                                 | 0           |
+------+----------------------------------------------+-------------+
[08:07:35]: fastlane finished with errors
[08:07:35]: Error accessing file, this might be due to fastlane's directory handling
[08:07:35]: Check out https://docs.fastlane.tools/advanced/#directory-behavior for more details
bundler: failed to load command: fastlane (/Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/bin/fastlane)
/Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/cert/lib/cert/runner.rb:246:in write': No such file or directory @ rb_sysopen - /Users/xxxxxxxxxxxxxxxxxxxxxx/Certificates/development/XXXXXX A/S.cer (Errno::ENOENT) 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/cert/lib/cert/runner.rb:246:in store_certificate'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/cert/lib/cert/runner.rb:100:in block in find_existing_cert' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/cert/lib/cert/runner.rb:95:in each'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/cert/lib/cert/runner.rb:95:in find_existing_cert' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/cert/lib/cert/runner.rb:48:in run'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/cert/lib/cert/runner.rb:13:in launch' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/actions/get_certificates.rb:22:in run'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/runner.rb:263:in block (2 levels) in execute_action' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/actions/actions_helper.rb:69:in execute_action'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/runner.rb:255:in block in execute_action' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/runner.rb:229:in chdir'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/runner.rb:229:in execute_action' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/runner.rb:157:in trigger_action_by_name'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/fast_file.rb:159:in method_missing' 	from Fastfile:620:in block (2 levels) in parsing_binding'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/lane.rb:41:in call' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/runner.rb:204:in try_switch_to_lane'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/runner.rb:146:in trigger_action_by_name' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/fast_file.rb:159:in method_missing'
from Fastfile:615:in block (3 levels) in parsing_binding' 	from Fastfile:612:in each'
from Fastfile:612:in block (2 levels) in parsing_binding' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/lane.rb:41:in call'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/runner.rb:49:in block in execute' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/runner.rb:45:in chdir'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/runner.rb:45:in execute' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/lane_manager.rb:46:in cruise_lane'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/command_line_handler.rb:34:in handle' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/commands_generator.rb:110:in block (2 levels) in run'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/commander-4.6.0/lib/commander/command.rb:187:in call' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/commander-4.6.0/lib/commander/command.rb:157:in run'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/commander-4.6.0/lib/commander/runner.rb:444:in run_active_command' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:124:in run!'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/commander-4.6.0/lib/commander/delegates.rb:18:in run!' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/commands_generator.rb:363:in run'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/commands_generator.rb:43:in start' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/fastlane/lib/fastlane/cli_tools_distributor.rb:123:in take_off'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/fastlane-2.222.0/bin/fastlane:23:in <top (required)>' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/bin/fastlane:25:in load'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/bin/fastlane:25:in <top (required)>' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.17/lib/bundler/cli/exec.rb:58:in load'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.17/lib/bundler/cli/exec.rb:58:in kernel_load' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.17/lib/bundler/cli/exec.rb:23:in run'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.17/lib/bundler/cli.rb:483:in exec' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.17/lib/bundler/vendor/thor/lib/thor/command.rb:27:in run'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.17/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in invoke_command' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.17/lib/bundler/vendor/thor/lib/thor.rb:392:in dispatch'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.17/lib/bundler/cli.rb:31:in dispatch' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.17/lib/bundler/vendor/thor/lib/thor/base.rb:485:in start'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.17/lib/bundler/cli.rb:25:in start' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.17/exe/bundle:48:in block in <top (required)>'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.17/lib/bundler/friendly_errors.rb:120:in with_friendly_errors' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.17/exe/bundle:36:in <top (required)>'
from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/bin/bundle:25:in load' 	from /Users/xxxxxxxxxxxxxxxxxxxxxx/.rbenv/versions/3.1.2/bin/bundle:25:in '
MacBook-Pro:swift_nemDialog xxxxxxxxxxxxxxxxxxxxxx$
Im running fastlane version 2.222.0, thank you in advance, hope some of you can help me out :)
Best Regards
Morten

Im still having this issue, it came out of nothing been using this code for years, hope somebody can help!


Wont turn on or shut down

When the Safe Shutdown switch is in the ON position, the power won't turn on or off.  The script seemed to download okay, I didn't get any errors.  I am sorry if I sound like a noob.

I was having the same issue. The script installed just fine but none of the switches were working. I switched the safe shutdown switch to OFF and it started working just fine?  (which doesn't make any sense to me)  I guess try playing around with the safe shutdown switch and see if that helps.

I"m having a similar issue, but it doesn't seem to work with the switch OFF or ON :/

I found a solution to this issue.  Basically I scrapped this script and found a custom script somewhere else.  I used the one here...
https://discourse.osmc.tv/t/howto-install-safe-shutdown-script-for-retroflag-cases/78572

I found a solution to this issue. Basically I scrapped this script and found a custom script somewhere else. I used the one here...
https://discourse.osmc.tv/t/howto-install-safe-shutdown-script-for-retroflag-cases/78572

Thank you, this worked unlike this obsoleted script that isn't working on newer RetroPie builds.


Optimise images

Current coverage is 51.29%

Merging #488 into master will not affect coverage as of 1e42ce1

@@            master    #488   diff @@
======================================
  Files           89      89
  Stmts         3967    3967
  Branches       405     405
  Methods          0       0
======================================
  Hit           2035    2035
  Partial         52      52
  Missed        1880    1880

Review entire Coverage Diff as of 1e42ce1

Powered by Codecov. Updated on successful CI builds.


Allow map to respond to changes in country, region, city or postal code

On Create / Edit event, if user enters a city / state / country, map should center on that on change

Ensure changes to data in the fields flows to the location / centering on the maps. This is lower priority because we want people to use the map first for maximum accuracy, but eventually it will be expected behavior.


Failed to save the source given by the server

I followed the instructions and installed gvim and the vimcoder plugin. But I get the following error when opening a problem -
Error: Failed to save the source given by the server. Cannot run program gvim (in directory "/Users/ahegde/.vimcoder/SRM-195-DIV-1/950") ; error=2 ; No such file or directory.
When I run gvim on my terminal it runs fine without any error.

Sorry, I had installed gvim using brew and hadnt given the full path in the editor command. I gave /usr/local/Cellar/macvim/7.4-73_1/bin/gvim instead of just gvim and it worked.


CommandLineParser doesn't parse the value properly if there is an '=' in the value.

Hey Giacomo,
I am using the command line  CommandLineParser package  version="2.0.273-beta"
When I provide the commandline option with
myApp.exe  --example1=”portal=https;sample=sample1”;
It takes only portal as an input for example1 ( I am assuming you split by = and assume none of the values will have = )
How can I escape the = in the commandline argument?
Thanks
Jinu

Hi @jinujoseph,
premising that this could deserve further investigation, I feel confident that you can treat this case as an option list. More info here in th wiki.
Define an Option bound to a sequence and set Separator to "," ("," is better than ";" since the is also a terminal command), the string will be automatically split by the parser. I also suggest you to use ":" token inside value instead of "=" already used by the parser for explicit long option assignment.
Going from memory, I post an untested snippet of code, that should implement what described:
class Options {
  [Option(Separator=",")]
  public IEnumerable<string> Settings { get; set; }
}

Than this will allow (all valid):
$ app --settings=portal:https,sampleA:sample1,xyz:abc
$ app --settings="portal:https,sampleA:sample1,xyz:abc"
$ app --settings portal:https,sampleA:sample1,xyz:abc
$ app --settings "portal:https,sampleA:sample1,xyz:abc"

If the value doesn't cotain spaces you can also omit double quote. When you enclose a value into double quote you're forcing the terminal to treat the enclosed characters as single command line argument: this job is done by the terminal, not by the library.
Coming back to our sample your Options.Settings sequence will contain 3 values:
portal:https
sampleA:sample1
xyz:abc

Now normal post-processing code will split these value-key pair and use can use your data in your program logic.
I hope that helped.

This has been inactive for a while, but it looks like the problem was solved. Can we close this? :)

I'm experiencing the same issue-- I need the full value-- why is the library attempting to parse stuff in quotes? In my case, it's a SQL Connection string.

@ElanHasson can you share an example? I don't see any issues.
void Main()
{
	var result = Parser.Default.ParseArguments<Options>(new[] { "--option",
         "Server=myServerAddress;Database=myDataBase;User Id=myUsername;" });
	result.WithParsed(o =>
	{
		o.Conn.Dump();
	});
}

class Options
{
	[OptionAttribute('o', "option")]
	public string Conn { get; set;}
}

Prints:
Server=myServerAddress;Database=myDataBase;User Id=myUsername;


the system cannot find the file specofied  while installing composer

The command interpreter did not run correctly:
C:\Windows\system32\cmd.exe
The system cannot find the file specified
what to do

what to do

Supply a log file, as requested when you created a new issue:
<!--
  Composer-Setup creates a log file in your temp directory AppData\Local\Temp, with a formatted filename:
    Setup Log YYYY-MM-DD #nnn.txt
  Please include this file if you experienced a problem with the installation process. Review it first
  for any data that might be sensitive.
-->

Closing as no further info.