Interface ICurve
Interface implemented by one-dimensional geometric objects (eg. line, circle, bspline etc.). The curve may be open or closed.
Namespace: CADability.GeoObject
Assembly: CADability.dll
Syntax
public interface ICurve
Properties
| Improve this Doc View SourceDescription
Returns a description of the curve, used in labels of the controlcenter.
Declaration
string Description { get; }
Property Value
| Type | Description |
|---|---|
| System.String |
EndDirection
The direction of the curve at the endpoint. If the curve is closed, this is the direction where the parameter is 1.0.
Declaration
GeoVector EndDirection { get; }
Property Value
| Type | Description |
|---|---|
| GeoVector |
EndPoint
The endpoint of the curve. If the curve is closed, this is the point where the parameter is 1.0.
Declaration
GeoPoint EndPoint { get; set; }
Property Value
| Type | Description |
|---|---|
| GeoPoint |
IsClosed
Determines, whether the curve is closed or open.
Declaration
bool IsClosed { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
IsComposed
Declaration
bool IsComposed { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
IsSingular
Determines, whether this curve is singular, i.e. it is only a point, returns the same value for each parameter
Declaration
bool IsSingular { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
Length
Returns the length of the curve.
Declaration
double Length { get; }
Property Value
| Type | Description |
|---|---|
| System.Double |
StartDirection
The direction of the curve at the start-point. If the curve is closed, this is the direction where the parameter is 0.0.
Declaration
GeoVector StartDirection { get; }
Property Value
| Type | Description |
|---|---|
| GeoVector |
StartPoint
The start-point of the curve. If the curve is closed, this is the point where the parameter is 0.0.
Declaration
GeoPoint StartPoint { get; set; }
Property Value
| Type | Description |
|---|---|
| GeoPoint |
SubCurves
Declaration
ICurve[] SubCurves { get; }
Property Value
| Type | Description |
|---|---|
| ICurve[] |
Methods
| Improve this Doc View SourceApproximate(Boolean, Double)
Declaration
ICurve Approximate(bool linesOnly, double maxError)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Boolean | linesOnly | true: no arcs, only lines |
| System.Double | maxError | Maximum derivation from the exact curve |
Returns
| Type | Description |
|---|---|
| ICurve | The Approximation |
Clone()
Returns an identical copy of this curve
Declaration
ICurve Clone()
Returns
| Type | Description |
|---|---|
| ICurve |
CloneModified(ModOp)
Returns a modified copy of this curve
Declaration
ICurve CloneModified(ModOp m)
Parameters
| Type | Name | Description |
|---|---|---|
| ModOp | m | modification |
Returns
| Type | Description |
|---|---|
| ICurve | modified copy |
DirectionAt(Double)
Returns the direction of the curve at a specified point. The parameter prosition of the start-point is 0.0, the parameter position of the endpoint is 1.0. Directions of a position outside this interval may be undefined.
Declaration
GeoVector DirectionAt(double Position)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | Position | Position on the curve |
Returns
| Type | Description |
|---|---|
| GeoVector | The requested direction |
DistanceTo(GeoPoint)
Returns the minimal distance of point p to the curve.
Declaration
double DistanceTo(GeoPoint p)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoPoint | p |
Returns
| Type | Description |
|---|---|
| System.Double |
GetExtent()
Returns the bounging cube for this curve
Declaration
BoundingCube GetExtent()
Returns
| Type | Description |
|---|---|
| BoundingCube | The cube bounding this curve |
GetExtrema(GeoVector)
Returns points of the curve (parameter values between 0.0 and 1.0) where the curve is tangential to
a plane defined by the normal vector direction
. These points are minima or maxima in that
direction.
Declaration
double[] GetExtrema(GeoVector direction)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoVector | direction | Direction for the extrema |
Returns
| Type | Description |
|---|---|
| System.Double[] | Positions of the extrema, if any |
GetPlanarState()
Determins the state of the curve in space. A curve may be either Planar (e.g. a cicle), NonPlanar (e.g. a polyline with vertices that dont shear a common plane) or UnderDetermined (e.g. a line defines a sheaf of planes (Ebenenbüschel))
Declaration
PlanarState GetPlanarState()
Returns
| Type | Description |
|---|---|
| PlanarState |
GetPlane()
Determins the plane in which the curve resides. Throws CurveException if the curve's PlanarState is NonPlanar or UnderDetermined.
Declaration
Plane GetPlane()
Returns
| Type | Description |
|---|---|
| Plane | The plane |
GetPlaneIntersection(Plane)
Returns the parameters of the intersection points with the provided plane
Declaration
double[] GetPlaneIntersection(Plane plane)
Parameters
| Type | Name | Description |
|---|---|---|
| Plane | plane | To intersect with |
Returns
| Type | Description |
|---|---|
| System.Double[] | Intersection parameters, may be empty |
GetProjectedCurve(Plane)
Orthogonally projects this curve into the given plane. Returns the 2D curve in the coordinate system of the given plane.
Declaration
ICurve2D GetProjectedCurve(Plane p)
Parameters
| Type | Name | Description |
|---|---|---|
| Plane | p | The plane this curve will be projected on |
Returns
| Type | Description |
|---|---|
| ICurve2D | The 2D curve in the given plane |
GetSavePositions()
Returns some positions (parameter values between 0.0 and 1.0) that can savely be used for Approximation purposes Usually not used by external applications
Declaration
double[] GetSavePositions()
Returns
| Type | Description |
|---|---|
| System.Double[] |
GetSelfIntersections()
Returns the self intersection position of this curve. The returned array contains pairs of parameter values. Each intersectionpoint corresponds to two parameters.
Declaration
double[] GetSelfIntersections()
Returns
| Type | Description |
|---|---|
| System.Double[] | Parameters of the intersection points |
HitTest(BoundingCube)
Determins whether this curve interferes with the provided cube.
Declaration
bool HitTest(BoundingCube cube)
Parameters
| Type | Name | Description |
|---|---|---|
| BoundingCube | cube | Cube to check interference with |
Returns
| Type | Description |
|---|---|
| System.Boolean | True, if curve and cube interfere |
IsInPlane(Plane)
Determines whether the curve resides in the given plane.
Declaration
bool IsInPlane(Plane p)
Parameters
| Type | Name | Description |
|---|---|---|
| Plane | p | The plane for the test |
Returns
| Type | Description |
|---|---|
| System.Boolean | true, when the curve resides in the plane |
ParameterToPosition(Double)
convert the parameter, which is in a natural system (0..2*pi for circle, first knot to last knot for bspline) to the 0..1 normalized position
Declaration
double ParameterToPosition(double parameter)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | parameter |
Returns
| Type | Description |
|---|---|
| System.Double | the position, 0..1 when inside the bounds |
PointAt(Double)
Returns the point of the given position. The parameter prosition of the start-point is 0.0, the parameter position of the endpoint is 1.0. Points of a position outside this interval may be undefined. The correlatioon between the parameter Position and the resulting point may be not linear.
Declaration
GeoPoint PointAt(double Position)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | Position | Position on the curve |
Returns
| Type | Description |
|---|---|
| GeoPoint | The requested point |
PositionAtLength(Double)
Returns the parameter of the point at the given position. The position must be in the interval [0, Length]. The correlatioon between the parameter Position and the resulting position is linear. The result is usually used for PointAt(Double) or DirectionAt(Double).
Declaration
double PositionAtLength(double position)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | position | Position on the curve |
Returns
| Type | Description |
|---|---|
| System.Double | The requested position |
PositionOf(GeoPoint)
Returns the parametric position of the point on the curve. This function is invers to DirectionAt(Double). If the given point is not on the curve, the result is the position of a point on the curve, that is close to the given point, but not necessary of the closest point.
Declaration
double PositionOf(GeoPoint p)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoPoint | p | Point, whos position is requested |
Returns
| Type | Description |
|---|---|
| System.Double | the requested position |
PositionOf(GeoPoint, Plane)
Similar to the PointAt(Double) method. Returns the same result, if the point is on the curve. If the point is not on the curve the problem is looked at in the given plane. i.e. the closest point on the projected 2d curve from the projected 2d point is used.
Declaration
double PositionOf(GeoPoint p, Plane pl)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoPoint | p | Point, whos position is requested |
| Plane | pl | Plane for the computation of the closest point |
Returns
| Type | Description |
|---|---|
| System.Double | the requested position |
PositionOf(GeoPoint, Double)
Similar to PositionOf(GeoPoint). If the point is not on the curve and there are several solutions then the solution closest to the parameter prefer will be returned.
Declaration
double PositionOf(GeoPoint p, double prefer)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoPoint | p | Point, whos position is requested |
| System.Double | prefer | preferable solution close to this value |
Returns
| Type | Description |
|---|---|
| System.Double | the requested position |
PositionToParameter(Double)
convert the position (which is in the 0..1 interval) to the natural parameter value
Declaration
double PositionToParameter(double position)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | position |
Returns
| Type | Description |
|---|---|
| System.Double |
Reverse()
Reverses the direction of the curve.
Declaration
void Reverse()
SameGeometry(ICurve, Double)
Returns true, if this curve and the provided curve describe the same curve in space (maybe opposite direction)
Declaration
bool SameGeometry(ICurve other, double precision)
Parameters
| Type | Name | Description |
|---|---|---|
| ICurve | other | The curve to be compared with |
| System.Double | precision | The required precision |
Returns
| Type | Description |
|---|---|
| System.Boolean | true, if geometrically equal |
Split(Double)
Splits the curve at the given position. The position must be in the interval 0..1 and the curve must not be closed. For closed curves Split(Double, Double).
Declaration
ICurve[] Split(double Position)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | Position | Where to split |
Returns
| Type | Description |
|---|---|
| ICurve[] | the splitted curve(s) |
Split(Double, Double)
Splits the closed curve into two open curves at the given positions.
Declaration
ICurve[] Split(double Position1, double Position2)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | Position1 | first Position |
| System.Double | Position2 | second Position |
Returns
| Type | Description |
|---|---|
| ICurve[] | the splitted curve(s) |
TangentPosition(GeoVector)
Returns a list of positions where the curve has the same or opposite direction as the given direction. Mainly used for visualisation purposes. If there are no such points (which is true in most cases) An empty array should be returned.
Declaration
double[] TangentPosition(GeoVector direction)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoVector | direction |
Returns
| Type | Description |
|---|---|
| System.Double[] |
Trim(Double, Double)
Modifies start and endpoint of this curve. StartPos must be less than EndPos. if StartPos is less than 0.0 or EndPos greater than 1.0 this only works for lines and (circular or elliptical) arcs.
Declaration
void Trim(double StartPos, double EndPos)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | StartPos | New start position |
| System.Double | EndPos | New end position |
TryPointDeriv2At(Double, out GeoPoint, out GeoVector, out GeoVector)
Tries to get the point and the first and second derivative of the curve at the specified position. (0..1) Some curves do not implement the second derivative and hence will return false.
Declaration
bool TryPointDeriv2At(double position, out GeoPoint point, out GeoVector deriv1, out GeoVector deriv2)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | position | Position where to calculate point and derivatives |
| GeoPoint | point | The point at the required position |
| GeoVector | deriv1 | The first derivative at the provided parameter |
| GeoVector | deriv2 | The second derivative at the provided parameter |
Returns
| Type | Description |
|---|---|
| System.Boolean |


British trader, wife rescued
by Zaida Delos ReyesGOVERNMENT forces rescued a British businessman and his wife who were abducted by members of Abu Sayyaf Group ( ASG) during their operation yesterday morning in Parang Sulu.
This was confirmed by Lt. Col. Gerald Monfort, spokesman of Joint Task Force Sulu. Monfort identified the victims as Allan Hyrons and Filipina wife Wilma.
The couple were rescued by troops of the Philippine Army’s (PA) 2nd Infantry Battalion(IB) yesterday morning at Mt. Piahan, Parang, Sulu.
Record showed that the victims were abducted by the bandits last October 4 from Hyrons Beach Resorts in Tukuran, Zamboanga del Sur.
According to JTF Sulu Commander Major General Corleto Vinluan Jr., the bandits were forced to hide the kidnapped victims with a minimum number of guards to avoid being detected by the military.
“They were unaware that we are monitoring and have anticipated their actions,” Vinluan said .
“Our troops were able to close in on the Abu Sayyaf Group and engaged them in a firefight. Overwhelmed by our forces they withdrew from the site, allowing our soldiers to rescue the couple. Our unrelenting efforts to flush out these terrorists allowed our troops to pinpoint the location of the enemy and finally free the kidnap victims,” Vinluan said.


Ugh, another coding blog?! Why?!
It’s true.
This is another coding blog
But it’s from a regular dude.
You see, up until not so long ago I was living the average life. I was average. The only thing I wanted was to just play it safe. I’m not proud of that at all, but to be honest I’m grateful I could go through that path because eventually, after living in Hungary in two different years (the first time as an Erasmus student, the second as an EVS volunteer, it brought me to the best a-ha moment of my life: when I discovered web development. It truly was that good.
In code, I found what I didn’t elsewhere. I found freedom.
Family Guy explains code
This picture from Family Guy sums up pretty well what coding is in my own view. Because just as Peter and Brian lure James Woods with candies as baits, code lures me (and hopefully you) with its languages and concepts. The only difference is that while James Woods gets trapped in a wooden crate - he stops eating candy - we can keep learning forever (I hope there is internet in Heaven).
That’s also part of the beauty behind code. When you think you know it all, when you start getting comfortable, that’s the time you start deprecating as a developer and realize there is so much more to learn. It rings a bell for me because I never liked monotony. Code offers the opposite.
Enjoy your job
I came back home last summer, I had no options left but to look for a job.
I looked at myself: what good could that bring in the long term? What’s the point of working all day long if you don’t enjoy it. I don’t get those who consider work just work: it represents how we spend a significant time of our lives. It’s how we spend most of our days. It must be invested in something we thrive to wake up to every single morning, if not most
With “those” I don’t address the people who need a job, even if temporary, to escape a difficult situation. I don’t address them because they are the kind of people who have a goal in mind and work towards changing their lives for the good, they know well that their current job is indeed only current. I understand them. I did that too.
I’m addressing those who work for the mere purpose to make ends met. That’s takes a person to a mental breakdown down the line.
Mission.
So I ditched that. No more. No mas. Finish. Basta.
I did things in the wrong way too many times. I put others’ needs before me too many times.
That is where I come from. That is where I don’t want to go back anymore.
My purpose here is to document my journey from solo learner to professional web developer, I want to prove that it’s possible and that everybody can. And while I do it I want to contribute to community (our) learning.
In September 2017 I decided to stop fouling myself. I decided to take responsibility for my life. I decided to pursue a career in web development.
A month later I was selected to participate in the Google Developer Scholarship challenge, along with other 20 000 people.
Recently, in mid-February, I was grateful to be one of the lucky 1% who was selected to receive the full scholarship, a six months long program covering web development widely. It’s teaching me to build responsive websites by using HTML, CSS, JavaScript and its advanced libraries such as jQuery and React.
Planned contents
For this blog I have many ideas in mind, all can be narrowed in the following categories:
- document the scholarship I’m in right now, the Google Developer Scholarship sponsored by Google and taught via Udacity
- interviews with professional web developers
- my life
- tutorials
- walkthroughs on projects I built
I’m truly excited for what’s to come.


lcc.stars_processing package¶
Subpackages¶
- lcc.stars_processing.deciders package
- lcc.stars_processing.descriptors package
- Submodules
- lcc.stars_processing.descriptors.abbe_value_descr module
- lcc.stars_processing.descriptors.color_index_descr module
- lcc.stars_processing.descriptors.curve_density_descr module
- lcc.stars_processing.descriptors.curve_descr module
- lcc.stars_processing.descriptors.curves_shape_descr module
- lcc.stars_processing.descriptors.hist_shape_descr module
- lcc.stars_processing.descriptors.kurtosis_desc module
- lcc.stars_processing.descriptors.position_descriptor module
- lcc.stars_processing.descriptors.property_desc module
- lcc.stars_processing.descriptors.skewness_desc module
- lcc.stars_processing.descriptors.variogram_shape_descr module
- lcc.stars_processing.descriptors.variogram_slope_descr module
- Module contents
- lcc.stars_processing.systematic_search package
- lcc.stars_processing.tools package
- lcc.stars_processing.utilities package
- Submodules
- lcc.stars_processing.utilities.base_decider module
- lcc.stars_processing.utilities.base_descriptor module
- lcc.stars_processing.utilities.compare module
- lcc.stars_processing.utilities.sax module
- lcc.stars_processing.utilities.superv_base_decider module
- lcc.stars_processing.utilities.symbolic_representation module
- lcc.stars_processing.utilities.unsupervised_base module
- Module contents
Submodules¶
lcc.stars_processing.stars_filter module¶
-
class
lcc.stars_processing.stars_filter.
StarsFilter
(descriptors, deciders)¶ Bases:
object
This class is responsible for filtering stars according to given filters (their own implementation of filtering)
-
descriptors
¶ list – Descriptor objects
-
decider
¶ list – Decider object
-
learned
¶ bool – It is True after executing the learning
-
searched_coords
¶ list – Parameters space coordinates (got from descriptors) of searched objects
-
others_coords
¶ list – Parameters space coordinates (got from descriptors) of contamination objects
-
evaluateCoordinates
(stars_coords, meth='mean')¶ Get probability of membership calculated from all deciders
Parameters: - stars_coords (list, iterable) – List of coordinates (lists)
- meth (str) –
- Method for filtering:
- mean - mean probability
highest - highest probability
lowest - lowest probability
Returns: Probabilities of membership according to selected method
Return type: list
-
evaluateStars
(stars, meth='mean')¶ Get probabilities of membership of inspected stars
Parameters: - stars (list) – Star objects
- meth (str) –
- Method for filtering:
- mean - mean probability
highest - highest probability
lowest - lowest probability
Returns: Probabilities of membership according to selected the method
Return type: list
-
filterStars
(stars, pass_method='all')¶ Apply all deciders
Parameters: - stars (list, iterable) – Star objects to be filtered
- pass_method (str) –
Inspected star pass if it fulfill the selected condition. Methods for filtering:
all - all probabilities have to be greater then the thresholdmean - mean probability has to be greater then the threshold
one - at least one has to be greater then the threshold
Returns: Stars which passed thru filtering
Return type: list of `Star`s
-
getAllPredictions
(stars, with_features=False, check_passing=False)¶ Get probability of membership calculated from all deciders
-
getEvaluations
(stars)¶ Get probabilities of membership of inspected stars for all deciders
Parameters: - stars (list) – Star objects
- meth (str) –
- Method for filtering:
- mean - mean probability
highest - highest probability
lowest - lowest probability
Returns: Probabilities of membership according to selected the method
Return type: list
-
getROC
(s_stars, c_stars, n=30)¶
-
getSpaceCoordinates
(stars)¶ Get params space coordinates according to descriptors
Parameters: stars (list, tuple) – List of Star objects Returns: Coordinates of the stars as pandas DataFrame Return type: pandas.DataFrame
-
getStatistic
(s_stars, c_stars, threshold=None)¶ Parameters: - s_stars (list of Star objects) – Searched stars
- c_stars (list of Star objects) – Contamination stars
- threshold (float) – Treshold value for filtering (number from 0 to 1)
Returns: statistic information –
- precision (float)
True positive / (true positive + false positive)
- true_positive_rate (float)
Proportion of positives that are correctly identified as such
- true_negative_rate :(float)
Proportion of negatives that are correctly identified as such
- false_positive_rate (float)
Proportion of positives that are incorrectly identifiexd as negatives
- false_negative_rate (float)
Proportion of negatives that are incorrectly identified as positives
Return type: dict
-
learn
(searched, others)¶ Train deciders on given sample of Star objects
Parameters: - searched (list, tuple) – Sample of searched group of stars
- others (list, tuple) – Contamination sample of stars
Returns: Return type: None
-
learnOnCoords
(searched_coords, others_coords)¶ Train deciders on given sample of coordinates
Parameters: - searched_coords (pandas.DataFram, list, tuple) – Sample of searched coordinates
- others_coords (pandas.DataFram, list, tuple) – Contamination sample of coordinates
Returns: Return type: None
-


Words
Work
I am
Lena Masek
.
I’m passionate about psychology, gender, intersectional feminism, human rights, cultural theory, technology, and the internet – among many other things.
Feel free to read my
words
, and view my
work
.
Contact me at
@username
or by
email
.


See: Description
| Class | Description |
|---|---|
| CustomEvent | |
| CustomEvent.Builder | |
| ErrorEvent | |
| ErrorEvent.Builder | |
| ErrorEvent.StackTrace | |
| Event |
Base class of the Event
|
| Event.BaseBuilder<T> | |
| NetworkRequestEvent | |
| NetworkRequestEvent.Builder |
| Enum | Description |
|---|---|
| Event.Type |
Different types of events that can be instrumented
NetworkRequestEvent
ErrorEvent
CustomEvent
Instrumentation
class provides static
methods to collect and send these events.


TEST
RAINBOW
WHITE
BUCKY
ACTIVE
UPDATE PRINTERS
Back
Back
Set printer as:
WORKING
NOT WORKING
MAINTENANCE


--- title: Basic {sf} functionality for analyzing and plotting geospatial data author: Joshua Rosenberg date: '2020-06-08' slug: basic-sf-functionality-for-analyzing-and-plotting-geospatial-data categories: [r] tags: [] ---
This post has some information on using the {sf} (or simple features) R package for analyzing and plotting geospatial data. It is mostly for myself to reference in the future. A lot of this is from the Geocomputation With R book.
Load the {sf} and {tidyverse} packages:
library(sf)
library(tidyverse)
Create some test data. Here are five longitudes and latitudes. Two are special
The others are random (and are not within the United States).
points <- data.frame(lon = c(-65,-60, -55, -83.92, -84.55), lat = c(50, 45, 40, 35.96, 42.73))
The following function creates an sf object (telling R which columns within
points
are the longitude and latitude).
points <- st_as_sf(points, coords = c("lon", "lat"))
One thing I’m uncertain about is how {sf} knows that “lon” and “lat” have special meanings; what if, instead, I had named these something else? Would {sf} know how to prepare to plot them in the correct way? Let me know if you know the answer.
Attributes can be added to the sf object. The book suggests thinking of sf objects as containing spatial (e.g. lon, lat) data, and attributes; in addition to/because of this, sf objects can be treated as data frames (in many/most cases).
Here, I add names to the five points, using indexing as if the object was a data frame.
points$name <- c("random_place_c", "random_place_b", "random_place_c", "knoxville", "lansing")
It’s possible to drop the spatial/geometric part (class) of the object, which can be useful in some cases; the book mentions that the spatial part is “sticky” and can be difficult to ignore, even when you use the object as a data frame.
st_drop_geometry(points)
## name
## 1 random_place_c
## 2 random_place_b
## 3 random_place_c
## 4 knoxville
## 5 lansing
Here, it is easy to use a dplyr verb to remove the random places:
points %>%
filter(!str_detect(name, "random_place"))
## Simple feature collection with 2 features and 1 field
## geometry type: POINT
## dimension: XY
## bbox: xmin: -84.55 ymin: 35.96 xmax: -83.92 ymax: 42.73
## CRS: NA
## geometry name
## 1 POINT (-83.92 35.96) knoxville
## 2 POINT (-84.55 42.73) lansing
This step was the big leap for me, but it also illustrates why it can be useful to treat spatial data in a special way.
U.S. states can be represented with a shape representing each state’s boundaries.
There are a number of R packages that provide these shapes in sf format. I am using USAboundaries (mostly because I found it first).
library(USAboundaries)
USA <- us_boundaries()
I’m not fully grasping the details, but coordinate reference systems (CRSs) link spatial coordinates (e.g., lon, lat) to the three-dimensional shape of the Earth. There are short codes for these; a common CRS is 4269 (I have more to learn about this). This is important for the next step, the spatial operation.
USA <- st_set_crs(USA, "4269")
st_within()
provides information about relationships between pairs of sf objects.
There are many spatial operations in addition to st_within()
, including st_intersects()
and st_overlaps()
.
points_within_USA <- st_within(points, USA)
points_within_USA
## Sparse geometry binary predicate list of length 5, where the predicate was `within'
## 1: (empty)
## 2: (empty)
## 3: (empty)
## 4: 23
## 5: 18
This can be turned into an integer vector (or another kind of vector, like a logical vector).
as.integer(points_within_USA)
## [1] NA NA NA 23 18
This can be used to index USA
to see which state the points in dd
are within:
USA[as.integer(points_within_USA), ] %>%
filter(!is.na(name))
## Simple feature collection with 2 features and 12 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -90.41814 ymin: 34.98299 xmax: -81.6469 ymax: 48.21065
## CRS: NA
## statefp statens affgeoid geoid stusps name lsad aland
## 1 47 01325873 0400000US47 47 TN Tennessee 00<PHONE_NUMBER>67
## 2 26 01779789 0400000US26 26 MI Michigan 00<PHONE_NUMBER>45
## awater state_name state_abbr jurisdiction_type
## 1<PHONE_NUMBER> Tennessee TN state
## 2<PHONE_NUMBER>60 Michigan MI state
## geometry
## 1 MULTIPOLYGON (((-90.3007 35...
## 2 MULTIPOLYGON (((-84.61622 4...
It may be easier to specify the column with the name of the state, too
USA[as.integer(points_within_USA), "name"] %>%
filter(!is.na(name))
## Simple feature collection with 2 features and 1 field
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -90.41814 ymin: 34.98299 xmax: -81.6469 ymax: 48.21065
## CRS: NA
## name geometry
## 1 Tennessee MULTIPOLYGON (((-90.3007 35...
## 2 Michigan MULTIPOLYGON (((-84.61622 4...
sf objects can be plotted with ggplot2 using the sf geom; here is a plot of the state boundaries and the five points.
I’ll plot only the continental U.S.
ggplot() +
geom_sf(data = filter(USA, name != "Hawaii" & name != "Alaska")) +
geom_sf(data = points)
The projection (and theme) of the map can certainly be improved; this is more to demonstrate that {sf} objects can be plotted with {ggplot2}.
Many packages make it easier to plot spatial data of interest. Here is a plot of all of the school districts in Tennessee.
library(leaidr)
library(mapproj)
# only needed the first time
# lea_get(path = "./leaid_sh")
# 47 is the FIPS code for TN
tn <- lea_prep(path = "./leaid_sh", fips = "47")
## OGR data source with driver: ESRI Shapefile
## Source: "/Users/jrosenb8/utk-homepage/content/post/leaid_sh/schooldistrict_sy1819_tl19.shp", layer: "schooldistrict_sy1819_tl19"
## with 13315 features
## It has 18 fields
tn_df <- ggplot2::fortify(tn)
tn_map <-
ggplot() +
geom_path(data = tn,
aes(x = long, y = lat, group = group),
color = "gray", size = .2) +
theme_void()
tn_map_projected <-
tn_map +
coord_map()
print(tn_map_projected)
(h/t Isabella Velásquez for making this so seamless (even with fairly ginormous files) to do with the {leaidr} package).
There is a lot more (for me) to learn; this is just a start.
Resources:


Important news and other announcements about new releases, bugs/bug fixes, and general chitchat about the library are posted on the News page. News are also posted on Twitter.
The SMSLib Discussion Group is available for your queries and feedback. A Google Account is required in order to participate. Posts from new members are moderated, so there might be a slight delay if you post for the first time.
The Issue Tracker is also available for reporting issues, bugs or filing enhancement requests.
You can find the SMSLib source repository here: https://github.com/smslib/smslib-v3
Why would you want to contact me?
Do not contact me personally to request support. Read the previous paragraphs! I reserve the right to throw away your emails unless they contain information that should not be exchanged in public, like security or personal issues.
If you insist, my email address is admin@smslib.org


Symbol Index for ".Agent and Subject Creation"
Symbol Index for diagram
".Agent and Subject Creation"
Activity (Class)
activity for (Association)
Activity State (Class)
Activity State Change (Class)
Activity/direction (Generalization Node)
Agent (Class)
completion timepoint (Association)
created subject (Association)
creating event (Association)
Event (Class)
Event/Essential Type (Generalization Node)
observer (Association)
responsible for (Association)
responsible for performance of (Association)
SCA/Direction (Generalization Node)
State Change Activity (Class)
Subject (Class)
Subject Creation (Class)
Timepoint (Class)


Installing and Using Setuptools¶
Table of Contents
- Installing and Using Setuptools
- CHANGES
- 3.6
- 3.5.2
- 3.5.1
- 3.5
- 3.4.4
- 3.4.3
- 3.4.2
- 3.4.1
- 3.4
- 3.3
- 3.2
- 3.1
- 3.0.2
- 3.0.1
- 3.0
- 2.2
- 2.1.2
- 2.1.1
- 2.1
- 2.0.2
- 2.0.1
- 2.0
- 1.4.2
- 1.4.1
- 1.4
- 1.3.2
- 1.3.1
- 1.3
- 1.2
- 1.1.7
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1
- 1.0
- 0.9.8
- 0.9.7
- 0.9.6
- 0.9.5
- 0.9.4
- 0.9.3
- 0.9.2
- 0.9.1
- 0.9
- 0.8
- 0.7.8
- 0.7.7
- 0.7.6
- 0.7.5
- 0.7.4
- 0.7.3
- 0.7.2
- 0.7.1
- 0.7
- 0.7b4
- 0.6.49
- 0.6.48
- 0.6.47
- 0.6.46
- 0.6.45
- 0.6.44
- 0.6.43
- 0.6.42
- 0.6.41
- 0.6.40
- 0.6.39
- 0.6.38
- 0.6.37
- 0.6.36
- 0.6.35
- 0.6.34
- 0.6.33
- 0.6.32
- 0.6.31
- 0.6.30
- 0.6.29
- 0.6.28
- 0.6.27
- 0.6.26
- 0.6.25
- 0.6.24
- 0.6.23
- 0.6.21
- 0.6.20
- 0.6.19
- 0.6.18
- 0.6.17
- 0.6.16
- 0.6.15
- 0.6.14
- 0.6.13
- 0.6.12
- 0.6.11
- 0.6.10
- 0.6.9
- 0.6.8
- 0.6.7
- 0.6.6
- 0.6.5
- 0.6.4
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6
- 0.6c9
- 0.6c7
- 0.6c6
- 0.6c5
- 0.6c4
- 0.6c3
- 0.6c2
- 0.6c1
- 0.6b4
- 0.6b3
- 0.6b1
- 0.6a11
- 0.6a10
- 0.6a9
- 0.6a8
- 0.6a5
- 0.6a3
- 0.6a2
- 0.6a1
- 0.5a12
- 0.5a11
- 0.5a9
- 0.5a8
- 0.5a7
- 0.5a6
- 0.5a5
- 0.5a4
- 0.5a1
- 0.4a2
- 0.3a2
- 0.3a1
Installation Instructions¶
The recommended way to bootstrap setuptools on any system is to download ez_setup.py and run it using the target Python environment. Different operating systems have different recommended techniques to accomplish this basic routine, so below are some examples to get you started.
Setuptools requires Python 2.6 or later. To install setuptools on Python 2.4 or Python 2.5, use the bootstrap script for Setuptools 1.x.
The link provided to ez_setup.py is a bookmark to bootstrap script for the latest known stable release.
Windows 8 (Powershell)¶
For best results, uninstall previous versions FIRST (see Uninstalling).
Using Windows 8 or later, it’s possible to install with one simple Powershell command. Start up Powershell and paste this command:
> (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python -
You must start the Powershell with Administrative privileges or you may choose to install a user-local installation:
> (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python - --user
If you have Python 3.3 or later, you can use the py
command to install to
different Python versions. For example, to install to Python 3.3 if you have
Python 2.7 installed:
> (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | py -3 -
The recommended way to install setuptools on Windows is to download ez_setup.py and run it. The script will download the appropriate .egg file and install it for you.
Once installation is complete, you will find an easy_install
program in
your Python Scripts
subdirectory. For simple invocation and best results,
add this directory to your PATH
environment variable, if it is not already
present. If you did a user-local install, the Scripts
subdirectory is
$env:APPDATA\Python\Scripts
.
Windows 7 (or graphical install)¶
For Windows 7 and earlier, download ez_setup.py using your favorite web browser or other technique and “run” that file.
Unix (wget)¶
Most Linux distributions come with wget.
Download ez_setup.py and run it using the target Python version. The script will download the appropriate version and install it for you:
> wget https://bootstrap.pypa.io/ez_setup.py -O - | python
Note that you will may need to invoke the command with superuser privileges to install to the system Python:
> wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
Alternatively, Setuptools may be installed to a user-local path:
> wget https://bootstrap.pypa.io/ez_setup.py -O - | python - --user
Unix including Mac OS X (curl)¶
If your system has curl installed, follow the wget
instructions but
replace wget
with curl
and -O
with -o
. For example:
> curl https://bootstrap.pypa.io/ez_setup.py -o - | python
Advanced Installation¶
For more advanced installation options, such as installing to custom locations or prefixes, download and extract the source tarball from Setuptools on PyPI and run setup.py with any supported distutils and Setuptools options. For example:
setuptools-x.x$ python setup.py install --prefix=/opt/setuptools
Use --help
to get a full options list, but we recommend consulting
the EasyInstall manual for detailed instructions, especially the section
on custom installation locations.
Downloads¶
All setuptools downloads can be found at the project’s home page in the Python Package Index. Scroll to the very bottom of the page to find the links.
In addition to the PyPI downloads, the development version of setuptools
is available from the Bitbucket repo, and in-development versions of the
0.6 branch are available as well.
Uninstalling¶
On Windows, if Setuptools was installed using an .exe
or .msi
installer, simply use the uninstall feature of “Add/Remove Programs” in the
Control Panel.
Otherwise, to uninstall Setuptools or Distribute, regardless of the Python
version, delete all setuptools*
and distribute*
files and
directories from your system’s site-packages
directory
(and any other sys.path
directories) FIRST.
If you are upgrading or otherwise plan to re-install Setuptools or Distribute, nothing further needs to be done. If you want to completely remove Setuptools, you may also want to remove the ‘easy_install’ and ‘easy_install-x.x’ scripts and associated executables installed to the Python scripts directory.
Using Setuptools and EasyInstall¶
Here are some of the available manuals, tutorials, and other resources for learning about Setuptools, Python Eggs, and EasyInstall:
- The EasyInstall user’s guide and reference manual
- The setuptools Developer’s Guide
- The pkg_resources API reference
- Package Compatibility Notes (user-maintained)
- The Internal Structure of Python Eggs
Questions, comments, and bug reports should be directed to the distutils-sig mailing list. If you have written (or know of) any tutorials, documentation, plug-ins, or other resources for setuptools users, please let us know about them there, so this reference list can be updated. If you have working, tested patches to correct problems or add features, you may submit them to the setuptools bug tracker.
Credits¶
- The original design for the
.egg
format and thepkg_resources
API was co-created by Phillip Eby and Bob Ippolito. Bob also implemented the first version ofpkg_resources
, and supplied the OS X operating system version compatibility algorithm. - Ian Bicking implemented many early “creature comfort” features of easy_install, including support for downloading via Sourceforge and Subversion repositories. Ian’s comments on the Web-SIG about WSGI application deployment also inspired the concept of “entry points” in eggs, and he has given talks at PyCon and elsewhere to inform and educate the community about eggs and setuptools.
- Jim Fulton contributed time and effort to build automated tests of various
aspects of
easy_install
, and supplied the doctests for the command-line.exe
wrappers on Windows. - Phillip J. Eby is the seminal author of setuptools, and first proposed the idea of an importable binary distribution format for Python application plug-ins.
- Significant parts of the implementation of setuptools were funded by the Open Source Applications Foundation, to provide a plug-in infrastructure for the Chandler PIM application. In addition, many OSAF staffers (such as Mike “Code Bear” Taylor) contributed their time and stress as guinea pigs for the use of eggs and setuptools, even before eggs were “cool”. (Thanks, guys!)
- Tarek Ziadé is the principal author of the Distribute fork, which re-invigorated the community on the project, encouraged renewed innovation, and addressed many defects.
- Since the merge with Distribute, Jason R. Coombs is the maintainer of setuptools. The project is maintained in coordination with the Python Packaging Authority (PyPA) and the larger Python community.
CHANGES¶
3.6¶
- Issue #203: Honor proxy settings for Powershell downloader in the bootstrap routine.
3.5.2¶
- Issue #168: More robust handling of replaced zip files and stale caches. Fixes ZipImportError complaining about a ‘bad local header’.
3.5.1¶
- Issue #199: Restored
install._install
for compatibility with earlier NumPy versions.
3.5¶
- Issue #195: Follow symbolic links in find_packages (restoring behavior broken in 3.4).
- Issue #197: On Python 3.1, PKG-INFO is now saved in a UTF-8 encoding instead
of
sys.getpreferredencoding
to match the behavior on Python 2.6-3.4. - Issue #192: Preferred bootstrap location is now https://bootstrap.pypa.io/ez_setup.py (mirrored from former location).
3.4.4¶
- Issue #184: Correct failure where find_package over-matched packages when directory traversal isn’t short-circuited.
3.4.3¶
- Issue #183: Really fix test command with Python 3.1.
3.4.2¶
- Issue #183: Fix additional regression in test command on Python 3.1.
3.4.1¶
- Issue #180: Fix regression in test command not caught by py.test-run tests.
3.4¶
- Issue #176: Add parameter to the test command to support a custom test runner: –test-runner or -r.
- Issue #177: Now assume most common invocation to install command on platforms/environments without stack support (issuing a warning). Setuptools now installs naturally on IronPython. Behavior on CPython should be unchanged.
3.2¶
- Pull Request #39: Add support for C++ targets from Cython
.pyx
files. - Issue #162: Update dependency on certifi to 1.0.1.
- Issue #164: Update dependency on wincertstore to 0.2.
3.1¶
- Issue #161: Restore Features functionality to allow backward compatibility (for Features) until the uses of that functionality is sufficiently removed.
3.0.1¶
- Issue #157: Restore support for Python 2.6 in bootstrap script where
zipfile.ZipFile
does not yet have support for context managers.
3.0¶
- Issue #125: Prevent Subversion support from creating a ~/.subversion directory just for checking the presence of a Subversion repository.
- Issue #12: Namespace packages are now imported lazily. That is, the mere
declaration of a namespace package in an egg on
sys.path
no longer causes it to be imported whenpkg_resources
is imported. Note that this change means that all of a namespace package’s__init__.py
files must include adeclare_namespace()
call in order to ensure that they will be handled properly at runtime. In 2.x it was possible to get away without including the declaration, but only at the cost of forcing namespace packages to be imported early, which 3.0 no longer does. - Issue #148: When building (bdist_egg), setuptools no longer adds
__init__.py
files to namespace packages. Any packages that rely on this behavior will need to create__init__.py
files and include thedeclare_namespace()
. - Issue #7: Setuptools itself is now distributed as a zip archive in addition to tar archive. ez_setup.py now uses zip archive. This approach avoids the potential security vulnerabilities presented by use of tar archives in ez_setup.py. It also leverages the security features added to ZipFile.extract in Python 2.7.4.
- Issue #65: Removed deprecated Features functionality.
- Pull Request #28: Remove backport of
_bytecode_filenames
which is available in Python 2.6 and later, but also has better compatibility with Python 3 environments. - Issue #156: Fix spelling of __PYVENV_LAUNCHER__ variable.
2.2¶
- Issue #141: Restored fix for allowing setup_requires dependencies to override installed dependencies during setup.
- Issue #128: Fixed issue where only the first dependency link was honored in a distribution where multiple dependency links were supplied.
2.1.2¶
- Issue #144: Read long_description using codecs module to avoid errors installing on systems where LANG=C.
2.1.1¶
- Issue #139: Fix regression in re_finder for CVS repos (and maybe Git repos as well).
2.1¶
- Issue #129: Suppress inspection of
*.whl
files when searching for files in a zip-imported file. - Issue #131: Fix RuntimeError when constructing an egg fetcher.
2.0.2¶
- Fix NameError during installation with Python implementations (e.g. Jython) not containing parser module.
- Fix NameError in
sdist:re_finder
.
2.0.1¶
- Issue #124: Fixed error in list detection in upload_docs.
2.0¶
- Issue #121: Exempt lib2to3 pickled grammars from DirectorySandbox.
- Issue #41: Dropped support for Python 2.4 and Python 2.5. Clients requiring setuptools for those versions of Python should use setuptools 1.x.
- Removed
setuptools.command.easy_install.HAS_USER_SITE
. Clients expecting this boolean variable should usesite.ENABLE_USER_SITE
instead. - Removed
pkg_resources.ImpWrapper
. Clients that expected this class should usepkgutil.ImpImporter
instead.
1.4.2¶
- Issue #116: Correct TypeError when reading a local package index on Python 3.
1.4.1¶
Issue #114: Use
sys.getfilesystemencoding
for decoding config inbdist_wininst
distributions.Issue #105 and Issue #113: Establish a more robust technique for determining the terminal encoding:
1. Try ``getpreferredencoding`` 2. If that returns US_ASCII or None, try the encoding from ``getdefaultlocale``. If that encoding was a "fallback" because Python could not figure it out from the environment or OS, encoding remains unresolved. 3. If the encoding is resolved, then make sure Python actually implements the encoding. 4. On the event of an error or unknown codec, revert to fallbacks (UTF-8 on Darwin, ASCII on everything else). 5. On the encoding is 'mac-roman' on Darwin, use UTF-8 as 'mac-roman' was a bug on older Python releases. On a side note, it would seem that the encoding only matters for when SVN does not yet support ``--xml`` and when getting repository and svn version numbers. The ``--xml`` technique should yield UTF-8 according to some messages on the SVN mailing lists. So if the version numbers are always 7-bit ASCII clean, it may be best to only support the file parsing methods for legacy SVN releases and support for SVN without the subprocess command would simple go away as support for the older SVNs does.
1.4¶
- Issue #27:
easy_install
will now use credentials from .pypirc if present for connecting to the package index. - Pull Request #21: Omit unwanted newlines in
package_index._encode_auth
when the username/password pair length indicates wrapping.
1.3¶
- Address security vulnerability in SSL match_hostname check as reported in Python #17997.
- Prefer backports.ssl_match_hostname for backport implementation if present.
- Correct NameError in
ssl_support
module (socket.error
).
1.2¶
- Issue #26: Add support for SVN 1.7. Special thanks to Philip Thiem for the contribution.
- Issue #93: Wheels are now distributed with every release. Note that as
reported in Issue #108, as of Pip 1.4, scripts aren’t installed properly
from wheels. Therefore, if using Pip to install setuptools from a wheel,
the
easy_install
command will not be available. - Setuptools “natural” launcher support, introduced in 1.0, is now officially supported.
1.1.7¶
- Fixed behavior of NameError handling in ‘script template (dev).py’ (script launcher for ‘develop’ installs).
ez_setup.py
now ensures partial downloads are cleaned up following a failed download.- Distribute #363 and Issue #55: Skip an sdist test that fails on locales other than UTF-8.
1.1.6¶
- Distribute #349:
sandbox.execfile
now opens the target file in binary mode, thus honoring a BOM in the file when compiled.
1.1.2¶
- Issue #69: Correct issue where 404 errors are returned for URLs with fragments in them (such as #egg=).
1.1¶
- Issue #71 (Distribute #333): EasyInstall now puts less emphasis on the
condition when a host is blocked via
--allow-hosts
. - Issue #72: Restored Python 2.4 compatibility in
ez_setup.py
.
1.0¶
- Issue #60: On Windows, Setuptools supports deferring to another launcher,
such as Vinay Sajip’s pylauncher
(included with Python 3.3) to launch console and GUI scripts and not install
its own launcher executables. This experimental functionality is currently
only enabled if the
SETUPTOOLS_LAUNCHER
environment variable is set to “natural”. In the future, this behavior may become default, but only after it has matured and seen substantial adoption. TheSETUPTOOLS_LAUNCHER
also accepts “executable” to force the default behavior of creating launcher executables. - Issue #63: Bootstrap script (ez_setup.py) now prefers Powershell, curl, or
wget for retrieving the Setuptools tarball for improved security of the
install. The script will still fall back to a simple
urlopen
on platforms that do not have these tools. - Issue #65: Deprecated the
Features
functionality. - Issue #52: In
VerifyingHTTPSConn
, handle a tunnelled (proxied) connection.
Backward-Incompatible Changes¶
This release includes a couple of backward-incompatible changes, but most if not all users will find 1.0 a drop-in replacement for 0.9.
- Issue #50: Normalized API of environment marker support. Specifically, removed line number and filename from SyntaxErrors when returned from pkg_resources.invalid_marker. Any clients depending on the specific string representation of exceptions returned by that function may need to be updated to account for this change.
- Issue #50: SyntaxErrors generated by pkg_resources.invalid_marker are normalized for cross-implementation consistency.
- Removed
--ignore-conflicts-at-my-risk
and--delete-conflicting
options to easy_install. These options have been deprecated since 0.6a11.
0.9.5¶
- Python #17980: Fix security vulnerability in SSL certificate validation.
0.9.4¶
- Issue #43: Fix issue (introduced in 0.9.1) with version resolution when upgrading over other releases of Setuptools.
0.9.1¶
- Distribute #386: Allow other positional and keyword arguments to os.open.
- Corrected dependency on certifi mis-referenced in 0.9.
0.7.8¶
- Distribute #375: Yet another fix for yet another regression.
0.7.7¶
- Distribute #375: Repair AttributeError created in last release (redo).
- Issue #30: Added test for get_cache_path.
0.7.6¶
- Distribute #375: Repair AttributeError created in last release.
0.7.5¶
- Issue #21: Restore Python 2.4 compatibility in
test_easy_install
. - Distribute #375: Merged additional warning from Distribute 0.6.46.
- Now honor the environment variable
SETUPTOOLS_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT
in addition to the now deprecatedDISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT
.
0.7.3¶
- Issue #1: Disable installation of Windows-specific files on non-Windows systems.
- Use new sysconfig module with Python 2.7 or >=3.2.
0.7¶
- Merged Setuptools and Distribute. See docs/merge.txt for details.
Added several features that were slated for setuptools 0.6c12:
- Index URL now defaults to HTTPS.
- Added experimental environment marker support. Now clients may designate a
PEP-426 environment marker for “extra” dependencies. Setuptools uses this
feature in
setup.py
for optional SSL and certificate validation support on older platforms. Based on Distutils-SIG discussions, the syntax is somewhat tentative. There should probably be a PEP with a firmer spec before the feature should be considered suitable for use. - Added support for SSL certificate validation when installing packages from an HTTPS service.
0.6.49¶
- Move warning check in
get_cache_path
to follow the directory creation to avoid errors when the cache path does not yet exist. Fixes the error reported in Distribute #375.
0.6.46¶
- Distribute #375: Issue a warning if the PYTHON_EGG_CACHE or otherwise customized egg cache location specifies a directory that’s group- or world-writable.
0.6.45¶
- Distribute #379:
distribute_setup.py
now traps VersionConflict as well, restoring ability to upgrade from an older setuptools version.
0.6.43¶
- Distribute #378: Restore support for Python 2.4 Syntax (regression in 0.6.42).
0.6.42¶
- External links finder no longer yields duplicate links.
- Distribute #337: Moved site.py to setuptools/site-patch.py (graft of very old patch from setuptools trunk which inspired PR #31).
0.6.41¶
- Distribute #27: Use public api for loading resources from zip files rather than the private method _zip_directory_cache.
- Added a new function
easy_install.get_win_launcher
which may be used by third-party libraries such as buildout to get a suitable script launcher.
0.6.40¶
- Distribute #376: brought back cli.exe and gui.exe that were deleted in the previous release.
0.6.39¶
- Add support for console launchers on ARM platforms.
- Fix possible issue in GUI launchers where the subsystem was not supplied to the linker.
- Launcher build script now refactored for robustness.
- Distribute #375: Resources extracted from a zip egg to the file system now also check the contents of the file against the zip contents during each invocation of get_resource_filename.
0.6.38¶
- Distribute #371: The launcher manifest file is now installed properly.
0.6.37¶
- Distribute #143: Launcher scripts, including easy_install itself, are now accompanied by a manifest on 32-bit Windows environments to avoid the Installer Detection Technology and thus undesirable UAC elevation described in this Microsoft article.
0.6.36¶
- Pull Request #35: In Buildout #64, it was reported that
under Python 3, installation of distutils scripts could attempt to copy
the
__pycache__
directory as a file, causing an error, apparently only under Windows. Easy_install now skips all directories when processing metadata scripts.
0.6.35¶
Note this release is backward-incompatible with distribute 0.6.23-0.6.34 in how it parses version numbers.
- Distribute #278: Restored compatibility with distribute 0.6.22 and setuptools 0.6. Updated the documentation to match more closely with the version parsing as intended in setuptools 0.6.
0.6.34¶
- Distribute #341: 0.6.33 fails to build under Python 2.4.
0.6.33¶
- Fix 2 errors with Jython 2.5.
- Fix 1 failure with Jython 2.5 and 2.7.
- Disable workaround for Jython scripts on Linux systems.
- Distribute #336: setup.py no longer masks failure exit code when tests fail.
- Fix issue in pkg_resources where try/except around a platform-dependent import would trigger hook load failures on Mercurial. See pull request 32 for details.
- Distribute #341: Fix a ResourceWarning.
0.6.32¶
- Fix test suite with Python 2.6.
- Fix some DeprecationWarnings and ResourceWarnings.
- Distribute #335: Backed out setup_requires superceding installed requirements until regression can be addressed.
0.6.31¶
Distribute #303: Make sure the manifest only ever contains UTF-8 in Python 3.
Distribute #329: Properly close files created by tests for compatibility with Jython.
Work around Jython #1980 and Jython #1981.
Distribute #334: Provide workaround for packages that reference sys.__stdout__ such as numpy does. This change should address virtualenv `#359 <https://github.com/pypa/virtualenv/issues/359>`_ as long as the system encoding is UTF-8 or the IO encoding is specified in the environment, i.e.:
PYTHONIOENCODING=utf8 pip install numpy
Fix for encoding issue when installing from Windows executable on Python 3.
Distribute #323: Allow setup_requires requirements to supercede installed requirements. Added some new keyword arguments to existing pkg_resources methods. Also had to updated how __path__ is handled for namespace packages to ensure that when a new egg distribution containing a namespace package is placed on sys.path, the entries in __path__ are found in the same order they would have been in had that egg been on the path when pkg_resources was first imported.
0.6.30¶
- Distribute #328: Clean up temporary directories in distribute_setup.py.
- Fix fatal bug in distribute_setup.py.
0.6.29¶
- Pull Request #14: Honor file permissions in zip files.
- Distribute #327: Merged pull request #24 to fix a dependency problem with pip.
- Merged pull request #23 to fix https://github.com/pypa/virtualenv/issues/301.
- If Sphinx is installed, the upload_docs command now runs build_sphinx to produce uploadable documentation.
- Distribute #326: upload_docs provided mangled auth credentials under Python 3.
- Distribute #320: Fix check for “createable” in distribute_setup.py.
- Distribute #305: Remove a warning that was triggered during normal operations.
- Distribute #311: Print metadata in UTF-8 independent of platform.
- Distribute #303: Read manifest file with UTF-8 encoding under Python 3.
- Distribute #301: Allow to run tests of namespace packages when using 2to3.
- Distribute #304: Prevent import loop in site.py under Python 3.3.
- Distribute #283: Reenable scanning of *.pyc / *.pyo files on Python 3.3.
- Distribute #299: The develop command didn’t work on Python 3, when using 2to3, as the egg link would go to the Python 2 source. Linking to the 2to3’d code in build/lib makes it work, although you will have to rebuild the module before testing it.
- Distribute #306: Even if 2to3 is used, we build in-place under Python 2.
- Distribute #307: Prints the full path when .svn/entries is broken.
- Distribute #313: Support for sdist subcommands (Python 2.7)
- Distribute #314: test_local_index() would fail an OS X.
- Distribute #310: Non-ascii characters in a namespace __init__.py causes errors.
- Distribute #218: Improved documentation on behavior of package_data and include_package_data. Files indicated by package_data are now included in the manifest.
- distribute_setup.py now allows a –download-base argument for retrieving distribute from a specified location.
0.6.28¶
- Distribute #294: setup.py can now be invoked from any directory.
- Scripts are now installed honoring the umask.
- Added support for .dist-info directories.
- Distribute #283: Fix and disable scanning of *.pyc / *.pyo files on Python 3.3.
0.6.27¶
- Support current snapshots of CPython 3.3.
- Distribute now recognizes README.rst as a standard, default readme file.
- Exclude ‘encodings’ modules when removing modules from sys.modules. Workaround for #285.
- Distribute #231: Don’t fiddle with system python when used with buildout (bootstrap.py)
0.6.26¶
- Distribute #183: Symlinked files are now extracted from source distributions.
- Distribute #227: Easy_install fetch parameters are now passed during the installation of a source distribution; now fulfillment of setup_requires dependencies will honor the parameters passed to easy_install.
0.6.25¶
- Distribute #258: Workaround a cache issue
- Distribute #260: distribute_setup.py now accepts the –user parameter for Python 2.6 and later.
- Distribute #262: package_index.open_with_auth no longer throws LookupError on Python 3.
- Distribute #269: AttributeError when an exception occurs reading Manifest.in on late releases of Python.
- Distribute #272: Prevent TypeError when namespace package names are unicode and single-install-externally-managed is used. Also fixes PIP issue 449.
- Distribute #273: Legacy script launchers now install with Python2/3 support.
0.6.24¶
- Distribute #249: Added options to exclude 2to3 fixers
0.6.23¶
- Distribute #244: Fixed a test
- Distribute #243: Fixed a test
- Distribute #239: Fixed a test
- Distribute #240: Fixed a test
- Distribute #241: Fixed a test
- Distribute #237: Fixed a test
- Distribute #238: easy_install now uses 64bit executable wrappers on 64bit Python
- Distribute #208: Fixed parsed_versions, it now honors post-releases as noted in the documentation
- Distribute #207: Windows cli and gui wrappers pass CTRL-C to child python process
- Distribute #227: easy_install now passes its arguments to setup.py bdist_egg
- Distribute #225: Fixed a NameError on Python 2.5, 2.4
0.6.21¶
- Distribute #225: FIxed a regression on py2.4
0.6.20¶
- Distribute #135: Include url in warning when processing URLs in package_index.
- Distribute #212: Fix issue where easy_instal fails on Python 3 on windows installer.
- Distribute #213: Fix typo in documentation.
0.6.19¶
- Distribute #206: AttributeError: ‘HTTPMessage’ object has no attribute ‘getheaders’
0.6.18¶
- Distribute #210: Fixed a regression introduced by Distribute #204 fix.
0.6.17¶
- Support ‘DISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT’ environment variable to allow to disable installation of easy_install-${version} script.
- Support Python >=3.1.4 and >=3.2.1.
- Distribute #204: Don’t try to import the parent of a namespace package in declare_namespace
- Distribute #196: Tolerate responses with multiple Content-Length headers
- Distribute #205: Sandboxing doesn’t preserve working_set. Leads to setup_requires problems.
0.6.16¶
- Builds sdist gztar even on Windows (avoiding Distribute #193).
- Distribute #192: Fixed metadata omitted on Windows when package_dir specified with forward-slash.
- Distribute #195: Cython build support.
- Distribute #200: Issues with recognizing 64-bit packages on Windows.
0.6.15¶
- Fixed typo in bdist_egg
- Several issues under Python 3 has been solved.
- Distribute #146: Fixed missing DLL files after easy_install of windows exe package.
0.6.14¶
- Distribute #170: Fixed unittest failure. Thanks to Toshio.
- Distribute #171: Fixed race condition in unittests cause deadlocks in test suite.
- Distribute #143: Fixed a lookup issue with easy_install. Thanks to David and Zooko.
- Distribute #174: Fixed the edit mode when its used with setuptools itself
0.6.13¶
- Distribute #160: 2.7 gives ValueError(“Invalid IPv6 URL”)
- Distribute #150: Fixed using ~/.local even in a –no-site-packages virtualenv
- Distribute #163: scan index links before external links, and don’t use the md5 when comparing two distributions
0.6.12¶
- Distribute #149: Fixed various failures on 2.3/2.4
0.6.11¶
- Found another case of SandboxViolation - fixed
- Distribute #15 and Distribute #48: Introduced a socket timeout of 15 seconds on url openings
- Added indexsidebar.html into MANIFEST.in
- Distribute #108: Fixed TypeError with Python3.1
- Distribute #121: Fixed –help install command trying to actually install.
- Distribute #112: Added an os.makedirs so that Tarek’s solution will work.
- Distribute #133: Added –no-find-links to easy_install
- Added easy_install –user
- Distribute #100: Fixed develop –user not taking ‘.’ in PYTHONPATH into account
- Distribute #134: removed spurious UserWarnings. Patch by VanLindberg
- Distribute #138: cant_write_to_target error when setup_requires is used.
- Distribute #147: respect the sys.dont_write_bytecode flag
0.6.10¶
- Reverted change made for the DistributionNotFound exception because zc.buildout uses the exception message to get the name of the distribution.
0.6.9¶
- Distribute #90: unknown setuptools version can be added in the working set
- Distribute #87: setupt.py doesn’t try to convert distribute_setup.py anymore Initial Patch by arfrever.
- Distribute #89: added a side bar with a download link to the doc.
- Distribute #86: fixed missing sentence in pkg_resources doc.
- Added a nicer error message when a DistributionNotFound is raised.
- Distribute #80: test_develop now works with Python 3.1
- Distribute #93: upload_docs now works if there is an empty sub-directory.
- Distribute #70: exec bit on non-exec files
- Distribute #99: now the standalone easy_install command doesn’t uses a
“setup.cfg” if any exists in the working directory. It will use it
only if triggered by
install_requires
from a setup.py call (install, develop, etc). - Distribute #101: Allowing
os.devnull
in Sandbox - Distribute #92: Fixed the “no eggs” found error with MacPort (platform.mac_ver() fails)
- Distribute #103: test_get_script_header_jython_workaround not run anymore under py3 with C or POSIX local. Contributed by Arfrever.
- Distribute #104: remvoved the assertion when the installation fails, with a nicer message for the end user.
- Distribute #100: making sure there’s no SandboxViolation when the setup script patches setuptools.
0.6.8¶
- Added “check_packages” in dist. (added in Setuptools 0.6c11)
- Fixed the DONT_PATCH_SETUPTOOLS state.
0.6.7¶
- Distribute #58: Added –user support to the develop command
- Distribute #11: Generated scripts now wrap their call to the script entry point in the standard “if name == ‘main’”
- Added the ‘DONT_PATCH_SETUPTOOLS’ environment variable, so virtualenv can drive an installation that doesn’t patch a global setuptools.
- Reviewed unladen-swallow specific change from http://code.google.com/p/unladen-swallow/source/detail?spec=svn875&r=719 and determined that it no longer applies. Distribute should work fine with Unladen Swallow 2009Q3.
- Distribute #21: Allow PackageIndex.open_url to gracefully handle all cases of a httplib.HTTPException instead of just InvalidURL and BadStatusLine.
- Removed virtual-python.py from this distribution and updated documentation to point to the actively maintained virtualenv instead.
- Distribute #64: use_setuptools no longer rebuilds the distribute egg every time it is run
- use_setuptools now properly respects the requested version
- use_setuptools will no longer try to import a distribute egg for the wrong Python version
- Distribute #74: no_fake should be True by default.
- Distribute #72: avoid a bootstrapping issue with easy_install -U
0.6.6¶
- Unified the bootstrap file so it works on both py2.x and py3k without 2to3 (patch by Holger Krekel)
0.6.5¶
- Distribute #65: cli.exe and gui.exe are now generated at build time, depending on the platform in use.
- Distribute #67: Fixed doc typo (PEP 381/382)
- Distribute no longer shadows setuptools if we require a 0.7-series setuptools. And an error is raised when installing a 0.7 setuptools with distribute.
- When run from within buildout, no attempt is made to modify an existing setuptools egg, whether in a shared egg directory or a system setuptools.
- Fixed a hole in sandboxing allowing builtin file to write outside of the sandbox.
0.6.4¶
- Added the generation of distribute_setup_3k.py during the release. This closes Distribute #52.
- Added an upload_docs command to easily upload project documentation to PyPI’s https://pythonhosted.org. This close issue Distribute #56.
- Fixed a bootstrap bug on the use_setuptools() API.
0.6.3¶
setuptools¶
- Fixed a bunch of calls to file() that caused crashes on Python 3.
bootstrapping¶
- Fixed a bug in sorting that caused bootstrap to fail on Python 3.
0.6.2¶
setuptools¶
- Added Python 3 support; see docs/python3.txt. This closes Old Setuptools #39.
- Added option to run 2to3 automatically when installing on Python 3. This closes issue Distribute #31.
- Fixed invalid usage of requirement.parse, that broke develop -d. This closes Old Setuptools #44.
- Fixed script launcher for 64-bit Windows. This closes Old Setuptools #2.
- KeyError when compiling extensions. This closes Old Setuptools #41.
bootstrapping¶
- Fixed bootstrap not working on Windows. This closes issue Distribute #49.
- Fixed 2.6 dependencies. This closes issue Distribute #50.
- Make sure setuptools is patched when running through easy_install This closes Old Setuptools #40.
0.6.1¶
setuptools¶
- package_index.urlopen now catches BadStatusLine and malformed url errors. This closes Distribute #16 and Distribute #18.
- zip_ok is now False by default. This closes Old Setuptools #33.
- Fixed invalid URL error catching. Old Setuptools #20.
- Fixed invalid bootstraping with easy_install installation (Distribute #40). Thanks to Florian Schulze for the help.
- Removed buildout/bootstrap.py. A new repository will create a specific bootstrap.py script.
bootstrapping¶
- The boostrap process leave setuptools alone if detected in the system and –root or –prefix is provided, but is not in the same location. This closes Distribute #10.
0.6¶
setuptools¶
- Packages required at build time where not fully present at install time. This closes Distribute #12.
- Protected against failures in tarfile extraction. This closes Distribute #10.
- Made Jython api_tests.txt doctest compatible. This closes Distribute #7.
- sandbox.py replaced builtin type file with builtin function open. This closes Distribute #6.
- Immediately close all file handles. This closes Distribute #3.
- Added compatibility with Subversion 1.6. This references Distribute #1.
pkg_resources¶
- Avoid a call to /usr/bin/sw_vers on OSX and use the official platform API instead. Based on a patch from ronaldoussoren. This closes issue #5.
- Fixed a SandboxViolation for mkdir that could occur in certain cases. This closes Distribute #13.
- Allow to find_on_path on systems with tight permissions to fail gracefully. This closes Distribute #9.
- Corrected inconsistency between documentation and code of add_entry. This closes Distribute #8.
- Immediately close all file handles. This closes Distribute #3.
easy_install¶
- Immediately close all file handles. This closes Distribute #3.
0.6c9¶
- Fixed a missing files problem when using Windows source distributions on non-Windows platforms, due to distutils not handling manifest file line endings correctly.
- Updated Pyrex support to work with Pyrex 0.9.6 and higher.
- Minor changes for Jython compatibility, including skipping tests that can’t work on Jython.
- Fixed not installing eggs in
install_requires
if they were also used forsetup_requires
ortests_require
.- Fixed not fetching eggs in
install_requires
when running tests.- Allow
ez_setup.use_setuptools()
to upgrade existing setuptools installations when called from a standalonesetup.py
.- Added a warning if a namespace package is declared, but its parent package is not also declared as a namespace.
- Support Subversion 1.5
- Removed use of deprecated
md5
module ifhashlib
is available- Fixed
bdist_wininst upload
trying to upload the.exe
twice- Fixed
bdist_egg
putting anative_libs.txt
in the source package’s.egg-info
, when it should only be in the built egg’sEGG-INFO
.- Ensure that _full_name is set on all shared libs before extensions are checked for shared lib usage. (Fixes a bug in the experimental shared library build support.)
- Fix to allow unpacked eggs containing native libraries to fail more gracefully under Google App Engine (with an
ImportError
loading the C-based module, instead of getting aNameError
).
0.6c7¶
- Fixed
distutils.filelist.findall()
crashing on broken symlinks, andegg_info
command failing on new, uncommitted SVN directories.- Fix import problems with nested namespace packages installed via
--root
or--single-version-externally-managed
, due to the parent package not having the child package as an attribute.
0.6c6¶
- Added
--egg-path
option todevelop
command, allowing you to force.egg-link
files to use relative paths (allowing them to be shared across platforms on a networked drive).- Fix not building binary RPMs correctly.
- Fix “eggsecutables” (such as setuptools’ own egg) only being runnable with bash-compatible shells.
- Fix
#!
parsing problems in Windows.exe
script wrappers, when there was whitespace inside a quoted argument or at the end of the#!
line (a regression introduced in 0.6c4).- Fix
test
command possibly failing if an older version of the project being tested was installed onsys.path
ahead of the test source directory.- Fix
find_packages()
treatingez_setup
and directories with.
in their names as packages.
0.6c5¶
- Fix uploaded
bdist_rpm
packages being described asbdist_egg
packages under Python versions less than 2.5.- Fix uploaded
bdist_wininst
packages being described as suitable for “any” version by Python 2.5, even if a--target-version
was specified.
0.6c4¶
- Overhauled Windows script wrapping to support
bdist_wininst
better. Scripts installed withbdist_wininst
will always use#!python.exe
or#!pythonw.exe
as the executable name (even when built on non-Windows platforms!), and the wrappers will look for the executable in the script’s parent directory (which should find the right version of Python).- Fix
upload
command not uploading files built bybdist_rpm
orbdist_wininst
under Python 2.3 and 2.4.- Add support for “eggsecutable” headers: a
#!/bin/sh
script that is prepended to an.egg
file to allow it to be run as a script on Unix-ish platforms. (This is mainly so that setuptools itself can have a single-file installer on Unix, without doing multiple downloads, dealing with firewalls, etc.)- Fix problem with empty revision numbers in Subversion 1.4
entries
files- Use cross-platform relative paths in
easy-install.pth
when doingdevelop
and the source directory is a subdirectory of the installation target directory.- Fix a problem installing eggs with a system packaging tool if the project contained an implicit namespace package; for example if the
setup()
listed a namespace packagefoo.bar
without explicitly listingfoo
as a namespace package.
0.6c2¶
- The
ez_setup
module displays the conflicting version of setuptools (and its installation location) when a script requests a version that’s not available.- Running
setup.py develop
on a setuptools-using project will now install setuptools if needed, instead of only downloading the egg.
0.6c1¶
- Fixed
AttributeError
when trying to download asetup_requires
dependency when a distribution lacks adependency_links
setting.- Made
zip-safe
andnot-zip-safe
flag files contain a single byte, so as to play better with packaging tools that complain about zero-length files.- Made
setup.py develop
respect the--no-deps
option, which it previously was ignoring.- Support
extra_path
option tosetup()
wheninstall
is run in backward-compatibility mode.- Source distributions now always include a
setup.cfg
file that explicitly setsegg_info
options such that they produce an identical version number to the source distribution’s version number. (Previously, the default version number could be different due to the use of--tag-date
, or if the version was overridden on the command line that built the source distribution.)
0.6b4¶
- Fix
register
not obeying name/version set byegg_info
command, ifegg_info
wasn’t explicitly run first on the same command line.- Added
--no-date
and--no-svn-revision
options toegg_info
command, to allow suppressing tags configured insetup.cfg
.- Fixed redundant warnings about missing
README
file(s); it should now appear only if you are actually a source distribution.
0.6b3¶
- Fix
bdist_egg
not including files in subdirectories of.egg-info
.- Allow
.py
files found by theinclude_package_data
option to be automatically included. Remove duplicate data file matches if bothinclude_package_data
andpackage_data
are used to refer to the same files.
0.6b1¶
- Strip
module
from the end of compiled extension modules when computing the name of a.py
loader/wrapper. (Python’s import machinery ignores this suffix when searching for an extension module.)
0.6a11¶
- Added
test_loader
keyword to support custom test loaders- Added
setuptools.file_finders
entry point group to allow implementing revision control plugins.- Added
--identity
option toupload
command.- Added
dependency_links
to allow specifying URLs for--find-links
.- Enhanced test loader to scan packages as well as modules, and call
additional_tests()
if present to get non-unittest tests.- Support namespace packages in conjunction with system packagers, by omitting the installation of any
__init__.py
files for namespace packages, and adding a special.pth
file to create a working package insys.modules
.- Made
--single-version-externally-managed
automatic when--root
is used, so that most system packagers won’t require special support for setuptools.- Fixed
setup_requires
,tests_require
, etc. not usingsetup.cfg
or other configuration files for their option defaults when installing, and also made the install use--multi-version
mode so that the project directory doesn’t need to support .pth files.MANIFEST.in
is now forcibly closed when any errors occur while reading it. Previously, the file could be left open and the actual error would be masked by problems trying to remove the open file on Windows systems.
0.6a9¶
- The
sdist
command no longer uses the traditionalMANIFEST
file to create source distributions.MANIFEST.in
is still read and processed, as are the standard defaults and pruning. But the manifest is built inside the project’s.egg-info
directory asSOURCES.txt
, and it is rebuilt every time theegg_info
command is run.- Added the
include_package_data
keyword tosetup()
, allowing you to automatically include any package data listed in revision control orMANIFEST.in
- Added the
exclude_package_data
keyword tosetup()
, allowing you to trim back files included via thepackage_data
andinclude_package_data
options.- Fixed
--tag-svn-revision
not working when run from a source distribution.- Added warning for namespace packages with missing
declare_namespace()
- Added
tests_require
keyword tosetup()
, so that e.g. packages requiringnose
to run unit tests can make this dependency optional unless thetest
command is run.- Made all commands that use
easy_install
respect its configuration options, as this was causing some problems withsetup.py install
.- Added an
unpack_directory()
driver tosetuptools.archive_util
, so that you can process a directory tree through a processing filter as if it were a zipfile or tarfile.- Added an internal
install_egg_info
command to use as part of old-styleinstall
operations, that installs an.egg-info
directory with the package.- Added a
--single-version-externally-managed
option to theinstall
command so that you can more easily wrap a “flat” egg in a system package.- Enhanced
bdist_rpm
so that it installs single-version eggs that don’t rely on a.pth
file. The--no-egg
option has been removed, since all RPMs are now built in a more backwards-compatible format.- Support full roundtrip translation of eggs to and from
bdist_wininst
format. Runningbdist_wininst
on a setuptools-based package wraps the egg in an .exe that will safely install it as an egg (i.e., with metadata and entry-point wrapper scripts), andeasy_install
can turn the .exe back into an.egg
file or directory and install it as such.
0.6a8¶
- Fixed some problems building extensions when Pyrex was installed, especially with Python 2.4 and/or packages using SWIG.
- Made
develop
command accept all the same options aseasy_install
, and use theeasy_install
command’s configuration settings as defaults.- Made
egg_info --tag-svn-revision
fall back to extracting the revision number fromPKG-INFO
in case it is being run on a source distribution of a snapshot taken from a Subversion-based project.- Automatically detect
.dll
,.so
and.dylib
files that are being installed as data, adding them tonative_libs.txt
automatically.- Fixed some problems with fresh checkouts of projects that don’t include
.egg-info/PKG-INFO
under revision control and put the project’s source code directly in the project directory. If such a package had any requirements that get processed before theegg_info
command can be run, the setup scripts would fail with a “Missing ‘Version:’ header and/or PKG-INFO file” error, because the egg runtime interpreted the unbuilt metadata in a directory onsys.path
(i.e. the current directory) as being a corrupted egg. Setuptools now monkeypatches the distribution metadata cache to pretend that the egg has valid version information, until it has a chance to make it actually be so (via theegg_info
command).
0.6a3¶
- Added
gui_scripts
entry point group to allow installing GUI scripts on Windows and other platforms. (The special handling is only for Windows; other platforms are treated the same as forconsole_scripts
.)
0.6a2¶
- Added
console_scripts
entry point group to allow installing scripts without the need to create separate script files. On Windows, console scripts get an.exe
wrapper so you can just type their name. On other platforms, the scripts are written without a file extension.
0.6a1¶
- Added support for building “old-style” RPMs that don’t install an egg for the target package, using a
--no-egg
option.- The
build_ext
command now works better when using the--inplace
option and multiple Python versions. It now makes sure that all extensions match the current Python version, even if newer copies were built for a different Python version.- The
upload
command no longer attaches an extra.zip
when uploading eggs, as PyPI now supports egg uploads without trickery.- The
ez_setup
script/module now displays a warning before downloading the setuptools egg, and attempts to check the downloaded egg against an internal MD5 checksum table.- Fixed the
--tag-svn-revision
option ofegg_info
not finding the latest revision number; it was using the revision number of the directory containingsetup.py
, not the highest revision number in the project.- Added
eager_resources
setup argument- The
sdist
command now recognizes Subversion “deleted file” entries and does not include them in source distributions.setuptools
now embeds itself more thoroughly into the distutils, so that other distutils extensions (e.g. py2exe, py2app) will subclass setuptools’ versions of things, rather than the native distutils ones.- Added
entry_points
andsetup_requires
arguments tosetup()
;setup_requires
allows you to automatically find and download packages that are needed in order to build your project (as opposed to running it).setuptools
now finds its commands,setup()
argument validators, and metadata writers using entry points, so that they can be extended by third-party packages. See Creating distutils Extensions for more details.- The vestigial
depends
command has been removed. It was never finished or documented, and never would have worked without EasyInstall - which it pre-dated and was never compatible with.
0.5a12¶
- The zip-safety scanner now checks for modules that might be used with
python -m
, and marks them as unsafe for zipping, since Python 2.4 can’t handle-m
on zipped modules.
0.5a11¶
- Fix breakage of the “develop” command that was caused by the addition of
--always-unzip
to theeasy_install
command.
0.5a9¶
- Include
svn:externals
directories in source distributions as well as normal subversion-controlled files and directories.- Added
exclude=patternlist
option tosetuptools.find_packages()
- Changed –tag-svn-revision to include an “r” in front of the revision number for better readability.
- Added ability to build eggs without including source files (except for any scripts, of course), using the
--exclude-source-files
option tobdist_egg
.setup.py install
now automatically detects when an “unmanaged” package or module is going to be onsys.path
ahead of a package being installed, thereby preventing the newer version from being imported. If this occurs, a warning message is output tosys.stderr
, but installation proceeds anyway. The warning message informs the user what files or directories need deleting, and advises them they can also use EasyInstall (with the--delete-conflicting
option) to do it automatically.- The
egg_info
command now adds atop_level.txt
file to the metadata directory that lists all top-level modules and packages in the distribution. This is used by theeasy_install
command to find possibly-conflicting “unmanaged” packages when installing the distribution.- Added
zip_safe
andnamespace_packages
arguments tosetup()
. Added package analysis to determine zip-safety if thezip_safe
flag is not given, and advise the author regarding what code might need changing.- Fixed the swapped
-d
and-b
options ofbdist_egg
.
0.5a8¶
- The “egg_info” command now always sets the distribution metadata to “safe” forms of the distribution name and version, so that distribution files will be generated with parseable names (i.e., ones that don’t include ‘-‘ in the name or version). Also, this means that if you use the various
--tag
options of “egg_info”, any distributions generated will use the tags in the version, not just egg distributions.- Added support for defining command aliases in distutils configuration files, under the “[aliases]” section. To prevent recursion and to allow aliases to call the command of the same name, a given alias can be expanded only once per command-line invocation. You can define new aliases with the “alias” command, either for the local, global, or per-user configuration.
- Added “rotate” command to delete old distribution files, given a set of patterns to match and the number of files to keep. (Keeps the most recently-modified distribution files matching each pattern.)
- Added “saveopts” command that saves all command-line options for the current invocation to the local, global, or per-user configuration file. Useful for setting defaults without having to hand-edit a configuration file.
- Added a “setopt” command that sets a single option in a specified distutils configuration file.
0.5a7¶
- Added “upload” support for egg and source distributions, including a bug fix for “upload” and a temporary workaround for lack of .egg support in PyPI.
0.5a6¶
- Beefed up the “sdist” command so that if you don’t have a MANIFEST.in, it will include all files under revision control (CVS or Subversion) in the current directory, and it will regenerate the list every time you create a source distribution, not just when you tell it to. This should make the default “do what you mean” more often than the distutils’ default behavior did, while still retaining the old behavior in the presence of MANIFEST.in.
- Fixed the “develop” command always updating .pth files, even if you specified
-n
or--dry-run
.- Slightly changed the format of the generated version when you use
--tag-build
on the “egg_info” command, so that you can make tagged revisions compare lower than the version specified in setup.py (e.g. by using--tag-build=dev
).
0.5a5¶
- Added
develop
command tosetuptools
-based packages. This command installs an.egg-link
pointing to the package’s source directory, and script wrappers thatexecfile()
the source versions of the package’s scripts. This lets you put your development checkout(s) on sys.path without having to actually install them. (To uninstall the link, use usesetup.py develop --uninstall
.)- Added
egg_info
command tosetuptools
-based packages. This command just creates or updates the “projectname.egg-info” directory, without building an egg. (It’s used by thebdist_egg
,test
, anddevelop
commands.)- Enhanced the
test
command so that it doesn’t install the package, but instead builds any C extensions in-place, updates the.egg-info
metadata, adds the source directory tosys.path
, and runs the tests directly on the source. This avoids an “unmanaged” installation of the package tosite-packages
or elsewhere.- Made
easy_install
a standardsetuptools
command, moving it from theeasy_install
module tosetuptools.command.easy_install
. Note that if you were importing or extending it, you must now change your imports accordingly.easy_install.py
is still installed as a script, but not as a module.
0.5a4¶
- Setup scripts using setuptools can now list their dependencies directly in the setup.py file, without having to manually create a
depends.txt
file. Theinstall_requires
andextras_require
arguments tosetup()
are used to create a dependencies file automatically. If you are manually creatingdepends.txt
right now, please switch to using these setup arguments as soon as practical, becausedepends.txt
support will be removed in the 0.6 release cycle. For documentation on the new arguments, see thesetuptools.dist.Distribution
class.- Setup scripts using setuptools now always install using
easy_install
internally, for ease of uninstallation and upgrading.
0.5a1¶
Added support for “self-installation” bootstrapping. Packages can now include
ez_setup.py
in their source distribution, and add the following to theirsetup.py
, in order to automatically bootstrap installation of setuptools as part of their setup process:from ez_setup import use_setuptools use_setuptools() from setuptools import setup # etc...
0.4a2¶
- Added
ez_setup.py
installer/bootstrap script to make initial setuptools installation easier, and to allow distributions using setuptools to avoid having to include setuptools in their source distribution.- All downloads are now managed by the
PackageIndex
class (which is now subclassable and replaceable), so that embedders can more easily override download logic, give download progress reports, etc. The class has also been moved to the newsetuptools.package_index
module.- The
Installer
class no longer handles downloading, manages a temporary directory, or tracks thezip_ok
option. Downloading is now handled byPackageIndex
, andInstaller
has become aneasy_install
command class based onsetuptools.Command
.- There is a new
setuptools.sandbox.run_setup()
API to invoke a setup script in a directory sandbox, and a newsetuptools.archive_util
module with anunpack_archive()
API. These were split out of EasyInstall to allow reuse by other tools and applications.setuptools.Command
now supports reinitializing commands using keyword arguments to set/reset options. Also,Command
subclasses can now set theircommand_consumes_arguments
attribute toTrue
in order to receive anargs
option containing the rest of the command line.


--- layout: page title: About header-img: "img/about-bg.png" ---
technology enthusiast, budding web developer, @lefurjah on twitter


My first group project in class. The subject of this project is wrapped around Marvel & DC superHeroes.Using three api calls to get stats, gifs, and movies onto the screen that is created dynamically with JQUERY
Click here to see the deployed version Click here to see the github repositoryTime Zone Traveler application that uses three api's. Map Box, Open cage, and Algolia api's. With GSAP animations for the intro loading of the home page. You can add food locations all over the world . When selecting the add food location button it with take you to food form page. From there you fill out all the fields to input a new food location into MySql database using sequelize models. Then a food icon will appear on the map that you can click on that with display information for that restaurant including a link to that restaurant website.
Click here to see the deployed version Click here to see the github repositoryWeather Dashboard is a app that will let you search for a city and display the current weather. It will also show you the future forecast for the next five days as well. You will also get wind speed, uv index, and humidity from the ajax call using the open weather map api call.
Click here to see the deployed version Click here to see the github repository


Ferry loaded with 3 cargo trucks sinks in Makango River
A ferry loaded with three cargo trucks has sunk in the Makango River, located in the East Gonja District of Savannah Region.
Strenuous efforts by personnel from the Ghana National Fire Service to rescue a sinking ferry failed.
The ferry had been sinking slowly for over an hour before the failed rescue effort started.
Joy News’ Correspondent, Isaac Nongya, reported earlier that the ferry was likely to submerge in the river since there was no rescue intervention.
Reporting after the ferry sank, Isaac said: “even attempts by other cargo trucks outside the ferry to pull out the loaded trucks on the ferry achieved success.”
The ferry was popular on the Makango to Yeji route and was bound for Yendi in the newly created Bono Region.
Isaac reported that the ferry first loaded two of the three trucks filled with tubers of yam but after adding the third loaded truck, it started sinking to the surprise of the owners and the ‘loading boys’ [porters], Isaac reports, Friday.


{% load staticfiles %}
Here's all the sites that you have created
Domain: http://<IP_ADDRESS>/website/{{ website.domain }} {{ website.description }}


About
I was born on a Wednesday evening, grew up at our Ngong home. To parents, Charles Mugita and Teresia Gati. Brother to PaulAnne Matinde, Judith Nyaboke and Francis Flynn.
I am a twenty year old guy aspiring to be someone in the future. My path has now got me at Moringa school where i look to become a better software developer at the end of my journey. The name Moringa school was mentioned first by a friend who went there then by an ispired dad and thats how i found mmy way into Moringa.
My first week at Moringa has been worth-while honestly. Meeting new people, learning new things has just been beneficial the last week first week i was there. It makes me anxious to start the second week. I also hope everything i am gonna learn will impact my career perfectly.
EDUCATIONAL BACKGROUND
2019 : Moringa School
2017 to date: Technical University of Mombasa, Bachelor of Science in Mathematics and Computer Science, First Year
2012 - 2016: Queen of apostles Seminary Kenya Certificate of Secondary Education
2004 - 2011: Olerai Primary School Kenya Certificate of Primary Education
HOBBIES
I enjoy:


About me
Hi, there! Thanks for visiting my personal website. I'm glad that you decided to get to know me better.
A quick summary...
I'm a 22 year old who loves building stuff, mostly web based and derive satisfaction from seeing people use it. At least, that's what I want to do. I appreciate good design and deify people who have a knack for creating good design. I have a passion for working with new technologies and I'm an out-and-out minimalist. I owe it to Hacker News for enlightening me with so many new and useful things.
Sourav Ganguly & Steve Jobs are my biggest inflencers. These two videos are my all time favorites of them.
What you can find here...
I intend to write about whatever that piques my curiosity. I believe that writing/documenting whatever I come across helps me be more organised and gives me an opportunity to share wisdom. ;)
That said, you can find posts ranging from Star Wars to Deadmau5 and Laravel to random snippets of code. Sounds interesting?
Let's Connect!
If you found my posts helpful or want to discuss about stuff, please feel free to get in touch with me. I'd love to get to know you!