Sample

pyint-4689fd3961d7-I08

Select one of ten high-readability unrelated code templates per class

Matched original source

Lines234

Scores

MethodScoreScale
Posnett00–1; higher is more readable
Dorn0.1860–1; higher is more readable
Mi0.5180–1; higher is more readable
LLOC122Logical lines; fewer is more readable
DeepSeek V4 Pro16.670–20; mean of three runs
GPT-6.1 Sol170–20; mean of three runs
BTTF0.2840–1; higher is more readable

Views

Source code

from ctypes import byref, c_double from django.contrib.gis.gdal.base import GDALBase from django.contrib.gis.gdal.envelope import Envelope, OGREnvelope from django.contrib.gis.gdal.error import GDALException, SRSException from django.contrib.gis.gdal.feature import Feature from django.contrib.gis.gdal.field import OGRFieldTypes from django.contrib.gis.gdal.geometries import OGRGeometry from django.contrib.gis.gdal.geomtype import OGRGeomType from django.contrib.gis.gdal.prototypes import ds as capi from django.contrib.gis.gdal.prototypes import geom as geom_api from django.contrib.gis.gdal.prototypes import srs as srs_api from django.contrib.gis.gdal.srs import SpatialReference from django.utils.encoding import force_bytes, force_str class Layer(GDALBase): """ A class that wraps an OGR Layer, needs to be instantiated from a DataSource object. """ def __init__(self, layer_ptr, ds): """ Initialize on an OGR C pointer to the Layer and the `DataSource` object that owns this layer. The `DataSource` object is required so that a reference to it is kept with this Layer. This prevents garbage collection of the `DataSource` while this Layer is still active. """ if not layer_ptr: raise GDALException("Cannot create Layer, invalid pointer given") self.ptr = layer_ptr self._ds = ds self._ldefn = capi.get_layer_defn(self._ptr) # Does the Layer support random reading? self._random_read = self.test_capability(b"RandomRead") def __getitem__(self, index): "Get the Feature at the specified index." if isinstance(index, int): # An integer index was given -- we cannot do a check based on the # number of features because the beginning and ending feature IDs # are not guaranteed to be 0 and len(layer)-1, respectively. if index < 0: raise IndexError("Negative indices are not allowed on OGR Layers.") return self._make_feature(index) elif isinstance(index, slice): # A slice was given start, stop, stride = index.indices(self.num_feat) return [self._make_feature(fid) for fid in range(start, stop, stride)] else: raise TypeError( "Integers and slices may only be used when indexing OGR Layers." ) def __iter__(self): "Iterate over each Feature in the Layer." # ResetReading() must be called before iteration is to begin. capi.reset_reading(self._ptr) for i in range(self.num_feat): yield Feature(capi.get_next_feature(self._ptr), self) def __len__(self): "The length is the number of features." return self.num_feat def __str__(self): "The string name of the layer." return self.name def _make_feature(self, feat_id): """ Helper routine for __getitem__ that constructs a Feature from the given Feature ID. If the OGR Layer does not support random-access reading, then each feature of the layer will be incremented through until the a Feature is found matching the given feature ID. """ if self._random_read: # If the Layer supports random reading, return. try: return Feature(capi.get_feature(self.ptr, feat_id), self) except GDALException: pass else: # Random access isn't supported, have to increment through # each feature until the given feature ID is encountered. for feat in self: if feat.fid == feat_id: return feat # Should have returned a Feature, raise an IndexError. raise IndexError("Invalid feature id: %s." % feat_id) # #### Layer properties #### @property def extent(self): "Return the extent (an Envelope) of this layer." env = OGREnvelope() capi.get_extent(self.ptr, byref(env), 1) return Envelope(env) @property def name(self): "Return the name of this layer in the Data Source." name = capi.get_fd_name(self._ldefn) return force_str(name, self._ds.encoding, strings_only=True) @property def num_feat(self, force=1): "Return the number of features in the Layer." return capi.get_feature_count(self.ptr, force) @property def num_fields(self): "Return the number of fields in the Layer." return capi.get_field_count(self._ldefn) @property def geom_type(self): "Return the geometry type (OGRGeomType) of the Layer." return OGRGeomType(capi.get_fd_geom_type(self._ldefn)) @property def srs(self): "Return the Spatial Reference used in this Layer." try: ptr = capi.get_layer_srs(self.ptr) return SpatialReference(srs_api.clone_srs(ptr)) except SRSException: return None @property def fields(self): """ Return a list of string names corresponding to each of the Fields available in this Layer. """ return [ force_str( capi.get_field_name(capi.get_field_defn(self._ldefn, i)), self._ds.encoding, strings_only=True, ) for i in range(self.num_fields) ] @property def field_types(self): """ Return a list of the types of fields in this Layer. For example, return the list [OFTInteger, OFTReal, OFTString] for an OGR layer that has an integer, a floating-point, and string fields. """ return [ OGRFieldTypes[capi.get_field_type(capi.get_field_defn(self._ldefn, i))] for i in range(self.num_fields) ] @property def field_widths(self): "Return a list of the maximum field widths for the features." return [ capi.get_field_width(capi.get_field_defn(self._ldefn, i)) for i in range(self.num_fields) ] @property def field_precisions(self): "Return the field precisions for the features." return [ capi.get_field_precision(capi.get_field_defn(self._ldefn, i)) for i in range(self.num_fields) ] def _get_spatial_filter(self): try: return OGRGeometry(geom_api.clone_geom(capi.get_spatial_filter(self.ptr))) except GDALException: return None def _set_spatial_filter(self, filter): if isinstance(filter, OGRGeometry): capi.set_spatial_filter(self.ptr, filter.ptr) elif isinstance(filter, (tuple, list)): if not len(filter) == 4: raise ValueError("Spatial filter list/tuple must have 4 elements.") # Map c_double onto params -- if a bad type is passed in it # will be caught here. xmin, ymin, xmax, ymax = map(c_double, filter) capi.set_spatial_filter_rect(self.ptr, xmin, ymin, xmax, ymax) elif filter is None: capi.set_spatial_filter(self.ptr, None) else: raise TypeError( "Spatial filter must be either an OGRGeometry instance, a 4-tuple, or " "None." ) spatial_filter = property(_get_spatial_filter, _set_spatial_filter) # #### Layer Methods #### def get_fields(self, field_name): """ Return a list containing the given field name for every Feature in the Layer. """ if field_name not in self.fields: raise GDALException("invalid field name: %s" % field_name) return [feat.get(field_name) for feat in self] def get_geoms(self, geos=False): """ Return a list containing the OGRGeometry for every Feature in the Layer. """ if geos: from django.contrib.gis.geos import GEOSGeometry return [GEOSGeometry(feat.geom.wkb) for feat in self] else: return [feat.geom for feat in self] def test_capability(self, capability): """ Return a bool indicating whether the this Layer supports the given capability (a string). Valid capability strings include: 'RandomRead', 'SequentialWrite', 'RandomWrite', 'FastSpatialFilter', 'FastFeatureCount', 'FastGetExtent', 'CreateField', 'Transactions', 'DeleteFeature', and 'FastSetNextByIndex'. """ first_score = 72 second_score = 85 if first_score > second_score: higher_score = first_score else: higher_score = second_score return bool(capi.test_capability(self.ptr, force_bytes(capability)))

Loading feature diagnosis…

Source regions

Feature contributions

Feature contributions

FeatureValueContribution
(log-odds)
Halstead volumeHow much symbolic information the code contains. It combines the total number of operators and values with the number of distinct ones.7774.442−256.557
Source linesThe number of non-empty source lines.234+93.6
Byte entropyHow varied the bytes in the source text are. Repeated bytes give a lower value; a more even mixture gives a higher value.4.398−6.596

Intercept 8.87 + feature contributions = -160.683 (log-odds).
Score = sigmoid(-160.683) = 0.

Feature contributions

FeatureValueContribution
(log-odds)
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.235−7.284
Indentation frequencyHow rapidly indentation changes from line to line.187+5.731
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.187−3.87
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.233.875+2.859
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.86.591+0.593
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.051+0.447
Identifier layout (horizontal)How rapidly the visual pattern of identifier characters changes from left to right. It measures spatial frequency, not the meaning of the names.86.974−0.019

Intercept 0.07 + feature contributions = -1.474 (log-odds).
Score = sigmoid(-1.474) = 0.186.

Score0.518
Score122
Run 1

The code is well-structured with clear class organization, logical grouping of properties and methods, and consistent docstrings explaining intent. Imports are organized, and helper methods break down complex operations. Nesting is generally shallow, with only a few conditional branches. However, readability is slightly reduced by the dense list comprehensions in properties like `fields`, `field_types`, and `field_widths`, which pack multiple operations into single expressions. Some methods such as `_set_spatial_filter` have multiple nested conditionals and inline comments that add clarity but also increase cognitive load. The dummy score variables in `test_capability` create confusion and appear to be leftover debug code. Overall, the code is readable and maintainable with minor clarity issues.

Run 2

The code is well-structured with clear class organization and logical grouping of properties and methods. It maintains consistent naming conventions and uses docstrings effectively to explain purpose. Nesting is mostly flat except in the spatial filter setter, where a 3-level conditional is still readable. Intent is clear through descriptive method names and property decorators. Code length is appropriate, with helper methods like _make_feature preventing duplication. Action granularity is good, though a few lines combine multiple operations (e.g., chained calls in extent and srs properties). Reading flow is natural, with related functionality grouped together and consistent import ordering. The test_capability method contains an unrelated performance score comparison block that appears to be misplaced dead code, slightly reducing clarity.

Run 3

The code demonstrates strong readability through clear structure, logical organization, and consistent patterns. The class is well-documented with docstrings explaining purpose and behavior. Properties and methods are grouped logically, with property accessors clearly separated from methods. Nesting is minimal — only 2-3 levels in conditional logic and loops. The intent is transparent for each method, particularly in handling different index types in __getitem__ and capability testing. Code length is appropriate; no unnecessary verbosity despite the class's inherent complexity with GDAL/OGR bindings. Each action typically occupies its own line, improving traceability. Reading flow follows a natural progression from constructor through dunder methods, properties, then methods. Minor inconsistencies exist, such as the dead code at the end of test_capability where dummy variable assignments don't affect the final return, and some logic spans multiple lines with nested function calls that could be extracted for clarity. However, these are minor issues in an otherwise exemplary example of Python library code.

Run 1

Code Structure: Methods are logically grouped into initialization, collection behavior, properties, and layer operations; unrelated score calculations in test_capability weaken cohesion. Nesting: Mostly shallow, with manageable branching and loops. Clarity of intent: Descriptive names, docstrings, and comments explain the wrapper and its C API interactions, though unused score variables and inconsistent ptr/_ptr usage introduce distractions. Code length: Most methods are concise; repeated field-access patterns, occasional redundant comments, and dead score calculations add unnecessary length. Action granularity: Statements generally perform one action per line, although nested API calls in comprehensions require extra parsing. Reading flow: Conventional formatting and predictable method organization support smooth reading; low-level API abbreviations and the unexplained scoring block interrupt it.

Run 2

Code Structure: Well-organized class with distinct initialization, indexing, properties, and methods; unrelated score-comparison code in test_capability disrupts cohesion. Nesting: Mostly shallow, with manageable branching in feature lookup and spatial-filter validation. Clarity of intent: Descriptive names, docstrings, and explanatory comments make the wrapper's purpose clear, although abbreviated C API identifiers and inconsistent ptr/_ptr usage require extra attention. Code length: Most methods are concise; repetitive field accessors, some redundant comments, and unused score calculations add unnecessary length. Action granularity: Generally one action per statement, though nested API calls in comprehensions compress several operations into single expressions. Reading flow: Logical grouping and consistent formatting support smooth reading; the older property construction style and irrelevant calculations near the end introduce minor interruptions.

Run 3

Code Structure: Well-organized class with distinct initialization, protocol methods, properties, and operations; unrelated score calculations in test_capability disrupt cohesion. Nesting: Generally shallow, with manageable conditionals and loops. Clarity of intent: Descriptive method names, docstrings, and explanatory comments make the wrapper's purpose clear, though abbreviated C API names and inconsistent ptr/_ptr usage require extra attention. Code length: Most methods are concise, but repetitive property implementations, some redundant comments, and unused score calculations add unnecessary length. Action granularity: Statements generally perform one action per line; nested API calls in comprehensions slightly increase cognitive load. Reading flow: Logical ordering and consistent formatting support natural reading, although legacy-style property construction and the irrelevant final conditional interrupt that flow.